我有两个简单的序列化器:
class ZoneSerializer(serializers.ModelSerializer):
class Meta:
model = Zone
fields = ('id', 'name')
class CitySerializer(serializers.ModelSerializer):
zone = ZoneSerializer(source='zone')
class Meta:
model = City
fields = ('id', 'name', 'zone')
因此客户端接收JSON对象,如:
{
"id": 11,
"name": "City1",
"zone": {
"id": 2,
"name": "Zone 2"
}
}
现在,当我从客户端收到JSON时......
{
"name": "NewCity",
"zone": {
"id": 2,
"name": "Zone 2"
}
}
...并希望将其作为一个新的"城市" POST(创建),我希望我的ModelSerializer知道" zone"在JSON中是Zone模型的外键,它不应该作为新的"区域"插入到db中。
有没有办法实现这一目标?或者我必须使用RelatedField
代替,虽然我想传递并接收完整的详细区域而不仅仅是主键?
答案 0 :(得分:1)
根据django-rest-framework的作者的this answer,答案是否定的,截至2013年1月,不可能("嵌套序列化程序目前不支持写操作")