我有一个django rest framework模型视图集(用于测试),它使用如下序列化:
class ProcessSerializer(serializers.Serializer):
class Meta:
model = Process.draft_model
fields = ['id', 'name']
class TestSerializer(serializers.ModelSerializer):
process = ProcessSerializer()
class Meta:
model = ConfigurationTest
fields = [
'id',
'name',
'process',
]
这在检索测试时非常有效,但在创建/更新时不起作用,理想情况下,我只想提供ID和如下请求:
{
process: 1
name: 'A new test'
}
当将该请求发送到服务器时,我得到一个类似Invalid data. Expected a dictionary, but got int
的错误
我的尝试:
process
和process_id
作为包含字段,并在POST请求中仅发送process_id
。在这种情况下,我会得到一个类似process_id cannot be null
的错误,这很容易混淆李>create
操作使用不同的序列化程序,该操作使用process
作为无嵌套序列化程序的普通PrimaryKeyRelatedField。这对于获取请求非常有效,但显然也意味着服务器对POST请求的响应不包括嵌套良好的序列化程序李>供参考的型号
class ConfigurationTest(...):
name = CharField(max_length=120)
process = ForeignKey(Process)
class Process(...):
name = CharField(max_length=120)
我会给一个像这样的序列化程序。只读的一个序列化程序字段,其中它将ProcessSerializer和ProcessID用作整型
并张贴此:
我不是100%确定您不需要覆盖创建/更新,但这应该可以正常工作
注意: 我知道你尝试过类似的逻辑。但代码是一样的吗
相关问题 更多 >
编程相关推荐