反序列化,即前端数据到后端,反序列化的同时肯定会进行数据校验,这和django中的form组件是一个道理。

    1. class GoodsSerializer(ModelSerializer):
    2. people = PeopleSerializer()
    3. # 覆盖hobby字段,显示出详情
    4. hobby = serializers.SerializerMethodField()
    5. class Meta:
    6. model = Goods
    7. fields = "__all__"
    8. def get_hobby(self,obj):
    9. return obj.get_hobby_display()
    10. # TODO:对单个字段验证,这是钩子函数,就跟form组件的钩子是一样的
    11. def validate_name(self, value):
    12. if "python" in value.lower():
    13. return value
    14. raise serializers.ValidationError('输入的商品名称必须包含python')
    15. # 除此之外,还有自定义钩子,全局钩子。