之前使用的serializers.Serializer
大多是都是自定义书写的
在插入数据以及修改数据的时候必须要手写create以及update方法
返回什么字段,也需要手写选择
于是,针对这些弊端,更完善的序列化类的封装ModelSerializer就出现了
下面贴一段代码,可以完全代替之前文章中的序列化类,
而且完全支持更新与新增
并且可以通过extra_kwargs定义新增时才会出现的字段
read_only定义只读字段,在新增时不出现
class BookSerialize(serializers.ModelSerializer):
class Meta:
model = Book
fields = ['title','price','publish','author','publish_company','author_list']
extra_kwargs = {
'publish':{'write_only':True},
'author': {'write_only': True},
}
publish_company = serializers.CharField(read_only=True,source='publish.company',max_length=32)
author_list = serializers.SerializerMethodField()
def get_author_list(self,book_obj):
author_list = list()
for author in book_obj.author.all():
author_list.append(author.name)
return author_list
好了,序列化类的进阶分享就到这