我有一个名为Notification
的模型,其中有一个名为notification_type
的字段。现在在NotificationSerializer.__init__
中,我想检查模型实例的notification_type
字段的值,并根据它的值,我想在序列化器上添加/删除一些字段。那可能吗?
我在self.instance
方法中尝试了__init__
但是在many=True
的情况下,它是一个查询集。我想根据每个模型实例进行修改。那可能吗?
答案 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