DRF - 根据实例的字段值添加/排除字段

时间:2016-11-20 02:33:38

标签: django-rest-framework

我有一个名为Notification的模型,其中有一个名为notification_type的字段。现在在NotificationSerializer.__init__中,我想检查模型实例的notification_type字段的值,并根据它的值,我想在序列化器上添加/删除一些字段。那可能吗?

我在self.instance方法中尝试了__init__但是在many=True的情况下,它是一个查询集。我想根据每个模型实例进行修改。那可能吗?

1 个答案:

答案 0 :(得分:1)

这是可能的,但不是在序列化程序__init__上。请改用序列化程序的to_representation方法。

def to_representation(self, obj):
    data = super().to_representation(obj)
    # data is your serialized instance

    if obj.notification_type == 'type1':
        data.pop('attr2')
    elif obj.notification_type == 'type2':
        data.pop('attr1')

    return data