根据对象的数据,我在以不同方式序列化对象时遇到了麻烦。
我想将帖子数据返回给客户端,其中包括诸如“标题”,“内容”,“作者”,“ is_anonymous”之类的信息。
这是问题所在。 当我收到要求数据的请求时,其中“ is_anonymous”字段为“ true”,我不应该提供“ author”字段。
我尝试自定义ViewSet中的“列表”或“接收”方法,但是即使我将“匿名”分类为非匿名分类,它仍然通过相同的序列化器进行处理。因此,我得出结论,这是关于序列化程序而不是视图集。
我应该怎么做?
答案 0 :(得分:0)
您可以看一下覆盖序列化程序的to_representation()
方法。这是我的意思的简单示例。
class ExampleSerializer(serializers.ModelSerializer):
def to_representation(self, instance):
rep = super().to_representation(instance)
if instance.is_anonymous:
rep["author"] = None
# del rep["author"]
return rep
在这里,我调用常规的to_representation()
方法,然后根据is_anonymous
属性修改结果。 You may want to familiarise yourself with the implementation of to_representation(instance)