常见的我就不说了, 我下面说一些我用到的, 又不容易搜索到的知识. 其实官网文档有说明, 可能会漏看,或者看过不知道用在什么场景.
嵌套序列化过滤
在一对多模型中, 如果通过一来查出多的模型,会把多的模型数据全部返回. 但是我现在只需要返回多的模型里面一部分数据,例如没有逻辑删的数据. 这时候可以指定多模型的 list_serializer_class
并重写 listserializer
的 to_representation
方法..to_representation() - Override this to support serialization, for read operations.
1 | class CustomListSerializer(serializers.ListSerializer): |
增加额外的字段
还是一对多的模型里面,想要在一的返回数据里面增加一个多的数量字段.还是可以重写 to_representation
方法.同理也可以减少或者修改字段和值.
1 | def to_representation(self, instance): |
越级筛选数据
这个是因为多层嵌套模型,在序列化中传值问题,例如把请求的参数传入到后面几层的序列化里面过滤.
1 | def to_representation(self, instance): |