2016-12-26 25 views
3

我正在使用Django-Rest-Framework的序列化程序。我有兩個串行器與另一個嵌套。DRF:從嵌套序列化器檢索外部輸入數據驗證方法

class NestedSerializer(serializers.Serializer): 
    value = AttributeValueField(required=True) 
    name = serializers.CharField(required=True) 

class OuterSerializer(serializers.Serializer): 
    info = serializers.CharField() 
    nested = NestedSerializer() 

爲了驗證我需要從父串行檢索輸入數據嵌套串行的數據,這樣的事情:

class NestedSerializer(serializers.Serializer): 
    ... 
    def validate(self, data): 
     # of course, it doesn't work, but thats the idea. 
     info = self.parent.info 
     # then validate the NestedSerializer with info. 

我無法找到任何方式來獲得訪問這些輸入來自驗證方法的數據。有什麼建議麼?謝謝你的幫助 :)。

回答

1

validate()方法之前,DRF序列化器調用to_internal_value(self, data)。您將在那裏獲得父序列化程序的所有數據。因此,當您在序列化程序中定義validate()方法時,請定義to_internal_value()方法並捕獲父序列化程序的數據。