Django Rest Framework Nested Serializer required=False 错误

Django Rest Framework Nested Serializer required=False error

在 DRF v3.1 中,我有一个嵌套序列化程序,与文档中详述的序列化程序非常相似 - http://www.django-rest-framework.org/api-guide/serializers/#dealing-with-nested-objects

class SerializerA(serializers.Serializer):
    details = DetailsSerializer(required=False)

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

{u'details': [u'This field may not be null.']}

根据文档,这似乎不正确?

有没有其他人遇到过这个或者可以将其验证为错误?

好的,Kevin Browns 的评论是正确的。我需要添加 allow_null=True.

class SerializerA(serializers.Serializer):
    details = DetailsSerializer(required=False, allow_null=True)

这是因为在构造序列化程序时,设置 required=False 允许字段详细信息从数据中消失。

例如 s = SerializerA(data={})

而 allow_null 允许指定参数但为空。

例如 s = SerializerA(data={'details': None})

这引发了 DRF Browsable 的另一个问题 API,但我会在另一个问题中提出这个问题。