ModelSerializer使用

ModelSerializer使用

ModelSerializer它继承了Serializer,它可以直接跟表模型建立关系

优势:

1.要序列化和反序列化的字段直接从表模型中通过映射获取
	eg: 自定义字段还是需要我们自己写的(注意要在fields中注册)
2.封装了create和update方法,但如果处理一下自定义字段还是需要重写方法

代码:

基础版:
class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = "__all__"
		
		
		
拓展版:
class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
	# 自定义字段也要在fields中注册
        fields = ['name', 'price', 'publish', 'authors','publish_detail','author_list' ]
        extra_kwargs = {
            # 这俩字段,只做反序列化
            'publish': {'write_only': True},
            'authors': {'write_only': True}
        }
    # 自定义字段
    publish_detail = serializers.DictField(read_only=True)
    author_list = serializers.ListField(read_only=True)
    # 局部钩子
    def validate_name(self,value):
        ...
        return value
    # 全局钩子
    def validate(self, attrs):
        ...
        return attrs
posted @ 2023-09-04 15:18  苙萨汗  阅读(17)  评论(0)    收藏  举报