2016-11-20 22 views
1

Notificationというモデルのフィールドはnotification_typeです。今度はNotificationSerializer.__init__に、モデルインスタンスのnotification_typeフィールドの値をチェックし、その値に基づいてシリアライザのいくつかのフィールドを追加/削除したいと思います。それは可能ですか?DRF - インスタンスのフィールド値に基づいてフィールドを追加/除外します

__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

関連する問題