在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.']}
考虑到文档,这似乎不正确?
有没有其他人遇到过这种情况或可以将其验证为错误?
好的,所以凯文布朗的评论是正确的。我需要添加 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可浏览API的另一个问题,但我会在另一个问题中提出这个问题。