Django rest framework Django Rest Framework嵌套序列化程序必需=错误

Django rest framework Django Rest Framework嵌套序列化程序必需=错误,django-rest-framework,Django Rest Framework,在DRF v3.1中,我有一个嵌套的序列化程序,很像文档中详细介绍的那样- 但是,当尝试使用此序列化程序而不提供详细信息时,我收到以下消息: {u'details': [u'This field may not be null.']} 考虑到文档,这似乎不正确 有没有其他人遇到过这个问题,或者可以确认这是一个bug?好的,凯文·布朗的评论是正确的。我需要添加allow_null=True class SerializerA(serializers.Serializer): detail

在DRF v3.1中,我有一个嵌套的序列化程序,很像文档中详细介绍的那样-

但是,当尝试使用此序列化程序而不提供详细信息时,我收到以下消息:

{u'details': [u'This field may not be null.']}
考虑到文档,这似乎不正确


有没有其他人遇到过这个问题,或者可以确认这是一个bug?

好的,凯文·布朗的评论是正确的。我需要添加allow_null=True

class SerializerA(serializers.Serializer):
    details = DetailsSerializer(required=False, allow_null=True)
这样做的原因是,在构造序列化程序时,如果使用required=False,则允许数据中不包含字段详细信息

e、 g。
s=SerializerA(data={})

而allow_null允许指定参数,但必须为null

e、 g。
s=SerializerA(数据={'details':None})


这打开了DRF Browsable API的另一个问题,但我将在另一个问题中问这个问题。

repr(SerializerA())的相关输出是什么?您可能希望为
DetailsSerializer
设置
allow_null
。您好,输出是
serializer():details=DetailsSerializer(required=False):a=CharField(max_length=100,min_length=1,required=True)
此外,根据文档,如果嵌套表示可以选择接受None值,则应将required=False标志传递给嵌套序列化程序。对我来说,这意味着我不需要allow_null参数,我正在与这个错误斗争几个小时。谢谢顺便问一下,我在哪里可以找到这个序列化程序文档?如果您有一个1:N关系,设置required=False是不够的。必须将many=true传递给序列化程序class CustomerSerializer(serializers.ModelSerializer):contact=ContactSerializer(many=True,read_only=True)``是通过谷歌得到的,所以我希望有人会读到这篇评论
class SerializerA(serializers.Serializer):
    details = DetailsSerializer(required=False, allow_null=True)