取决于Django Rest框架工作中的数据进行不同的序列化

时间:2019-05-19 15:41:15

标签: django-rest-framework

根据对象的数据,我在以不同方式序列化对象时遇到了麻烦。

我想将帖子数据返回给客户端,其中包括诸如“标题”,“内容”,“作者”,“ is_anonymous”之类的信息。

这是问题所在。 当我收到要求数据的请求时,其中“ is_anonymous”字段为“ true”,我不应该提供“ author”字段。

我尝试自定义ViewSet中的“列表”或“接收”方法,但是即使我将“匿名”分类为非匿名分类,它仍然通过相同的序列化器进行处理。因此,我得出结论,这是关于序列化程序而不是视图集。

我应该怎么做?

1 个答案:

答案 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)