Django REST框架:代表一个集合作为dict,而不是列表?

时间:2016-03-10 14:14:27

标签: django rest django-rest-framework

我想将一个集合表示为dict(即javascript方面的JSON),而不是REST API中的列表(即JS方面的JSON数组)。

例如,我想替换它:

/api/father/:

{
    "name": "John Smith",
    "children": [
        {
            "name": "James Smith",
            "age": 12
        },
        {
            "name": "Jane Smith",
            "age" : 9
        },
    ]
}

用这个:

/api/father/:

{
    "name": "John Smith",
    "children": {
            "James Smith": {
                "age": 12
            },
            "Jane Smith": {
                "age": 9
            }
        },
}

在Django REST Framework中有合理的方法吗?

1 个答案:

答案 0 :(得分:0)

如果你能避免,我不确定我会改变它。此数据样本:

"children": [
        {
            "name": "James Smith",
            "age": 12
        },
        {
            "name": "Jane Smith",
            "age" : 9
        },
    ]

是本机JSON对象(集合)。

但是,一种方法可能是添加序列化器方法字段并重组数据:

class MySerializer(serializers.ModelSerializer):
    ....  
    children = serializers.SerializerMethodField() 

    def get_children(self, obj):
       # restructure your data
       return ...