使用嵌套的序列化程序作为Django Rest Framework中的相关字段

时间:2014-06-19 12:13:39

标签: json django django-rest-framework

我有两个简单的序列化器:

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代替,虽然我想传递并接收完整的详细区域而不仅仅是主键?

1 个答案:

答案 0 :(得分:1)

根据django-rest-framework的作者的this answer,答案是否定的,截至2013年1月,不可能("嵌套序列化程序目前不支持写操作")