我正在使用Django Rest Framework 3.6.3。我试图为一个可选参数编写嵌套的创建序列化器,并在子项中编写一个必需参数。我知道我需要覆盖基本序列化程序中的create,告诉DRF如何创建嵌套子项 - http://www.django-rest-framework.org/api-guide/relations/#writable-nested-serializers。
但是,我无法弄清楚如何解析对象信息而不告诉它嵌套子序列化器的定义是什么。这样做会导致DRF使用它来解析子对象,然后返回一个我无法控制的验证错误,因为子序列化程序没有调用它的create方法。
我传入的信息是一个JSON对象:
{
base_id: 1,
base_info: 'blah'
specifications: [
{
specification_id: 1,
optional_info: {
optional_id: 1,
optional_stuff: 'blah'
},
required_info: {
required_id: 1,
required_stuff: 'required',
}
}
]
}
BaseCreationSerializer调用它的create方法。我知道我需要提取其余信息并手动创建。但是,我无法弄清楚如何让BaseCreationSerializer将数据解析为validated_data而不定义specification = SpecificationCreationSerializer()
,然后尝试解析该数据并抛出错误。打印self
显示data
中的整个JSON对象,但validated_data
仅包含序列化程序知道的事物的子集。如何解析data
中的相应内容,以便我可以自己创建对象?