DRF:从嵌套序列化器验证方法检索外部输入数据

Bru*_*oop 8 django django-rest-framework

我正在使用Django-Rest-Framework的序列化器。我有两个串行器,一个与另一个嵌套。

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

class OuterSerializer(serializers.Serializer):
    info = serializers.CharField()
    nested = NestedSerializer()
Run Code Online (Sandbox Code Playgroud)

为了验证嵌套序列化器的数据,我需要从父序列化器中检索输入数据,如下所示:

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.
Run Code Online (Sandbox Code Playgroud)

我找不到任何方法可以通过validate方法访问这些输入数据。有什么建议么?谢谢你的帮助 :)。

小智 6

validate()方法之前,DRF 序列化程序调用to_internal_value(self, data). 您将在那里获得父序列化程序的所有数据。因此,当您validate()在序列化程序中定义to_internal_value()方法时,定义方法并捕获父序列化程序的数据。

  • 请在您的答案中提供合适的示例。 (2认同)