2016-11-20 23 views
1

我有一個名爲Notification的模型,其名稱爲notification_type。現在在NotificationSerializer.__init__,我想檢查模型實例的notification_type字段的值,並根據它的值,我想添加/刪除序列化器上的一些字段。那可能嗎?DRF - 根據實例字段值添加/排除字段

我試過self.instance裏面的__init__方法,但在many=True的情況下,它是一個查詢集。我想根據每個模型實例進行修改。那可能嗎?

回答

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 
+0

謝謝。我會嘗試。 – masnun