2016-07-06 95 views
1

我有一個串行接收:鴻溝串行Django的REST框架

{ 
    "suggestions": [ 
     { 
     "description": "Portugal - Porto",  
     "integration_data": { 
     ....... 
     } 
     }, 
    { 
     "description": "Portugal - Porto", 
     "another_data":{ 
     ....... 
     } 
    }] 
} 

我怎樣才能讓我的串行做這樣的事情: 如果integration_data不爲空到功能X,我將與所有的邏輯工作串行器 如果another_data不爲空,則轉到函數Y,在那裏我將使用串行器的所有邏輯。

目前我的串行寫爲:

class SuggestionSerializer(serializers.HyperlinkedModelSerializer): 
    integration_data = serializers.DictField(write_only=True, allow_null=True, required=False) 
    sponsor_data = serializers.DictField(write_only=True, allow_null=True, required=False) 

感謝

回答

0

聽起來像是你想使用一個serializer method field。類似於

class SuggestionSerializer(serializers.HyperlinkedModelSerializer): 
    integration_data = = serializers.SerializerMethodField() 
    ... 
    def get_integration_data(self, obj): 
     # Insert logic for generating value of this field here 
     ... 
     return value 

這使您可以根據邏輯而不是數據任意生成字段的值。

+0

SerializerMethodFields是隻讀的,我相信作者似乎希望可寫字段。 –

+0

是的,它們是隻讀的 - 你認爲問題的作者想要在保存之前用函數處理數據......?不完全確定問題是什麼。 –

+0

我認爲是的,但我不認爲它們不符合模型領域。也許只是一個自定義創建... –