在django rest框架中序列化复杂字段

时间:2016-06-19 14:45:17

标签: python django serialization django-rest-framework

我的模型有一个JSON字段 extra_data ,其中包含可能添加到模型中的其他字段。从一开始就不知道除了强制字段之外还会添加多少个字段,这就是我引入 extra_data 字段的原因。

使用通常的休息框架序列化,我目前有类似的东西:

 [
    {
        "code": "1",
        "name": "Moscow",
        "extra_data": {
            "type": "Region"
        }
    },
    {
        "code": "2",
        "name": "Tatarstan",
        "extra_data": {
            "type": "Republic",
            "capital": "Kazan"

        }
    }
]

但我需要的东西是这样的:

 [
    {
        "code": "1",
        "name": "Moscow",
        "type": "City"
    },
    {
        "code": "2",
        "name": "Tatarstan",
        "type": "Republic",
        "capital": "Kazan"
    }
]

我需要帮助,我是django的新手

1 个答案:

答案 0 :(得分:1)

序列化程序本身我不认为可以做到这一点,因为你不知道有多少字段。但是一旦你得到serializer.data,你可以更新你的dict,如:

serializer_data = serializer.data
extra_data = serializer_data.pop('extra_data')
serializer_data.update(extra_data)
return serializer_data

我不是Django的专家,所以我没有告诉你确定没有办法用序列化器做到这一点,但没有我能想到的