研究了许久,记录一下
serializer类是最简单的序列化基类,封装也是最低级的,由此可以推出也就是灵活的,因为你自己要写的东西很多,就很灵活。
1、首先 ,用这个类你要实现两个方法,create和update,如下面官方文档所示:
class CommentSerializer(serializers.Serializer):
email = serializers.EmailField()
content = serializers.CharField(max_length=200)
created = serializers.DateTimeField()
def create(self, validated_data):
return Comment(**validated_data)
def update(self, instance, validated_data):
instance.email = validated_data.get('email', instance.email)
instance.content = validated_data.get('content', instance.content)
instance.created = validated_data.get('created', instance.created)
return instance
解释一下,create是新建的的时候用的,参数validated_data就是客户端传过来的参数。update中instance就是数据库中查询出来的model的object,调用方式如下:
# .save() will create a new instance.
serializer = CommentSerializer(data=data)
# .save() will update the existing `comment` instance.
serializer = CommentSerializer(comment, data=data)
2、有时候你可能需要传入的validated_data不仅包含模型中的字段,还有额外的需要用的,这个时候直接穿进去就行,用的时候直接validated_data.* 就可以出来了 见下面:
serializer.save(owner=request.user)
然后:
seria