如何在Django REST Framework中序列化"对象列表"

McA*_*bra 7 django json django-rest-framework

我需要一个类似这样的序列化器:

{
    "items": {
        12: {
            "name": "item 1"
        },
        66: {
            "name": "item 2"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该如何声明我的序列化器来获得这样的东西?这甚至是一个有效的JSON还是看起来像这样:

{
    "items": [
        {
            "name": "item 1",
            "id": 12
        }, {
            "name": "item 2"
            "id": 66
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

?(12,66是那些'项'的主键)使用Django REST Framework 3.

Gab*_*Muj 11

django rest framework 3中有一个ListField,你可以在这里查看文档http://www.django-rest-framework.org/api-guide/fields/#listfield

对于您的示例,您可以执行以下操作:

class ItemSerializer(serializers.Serializer):
    id = serializers.IntegerField()
    name = serializers.CharField()

class ItemsSerializer(serializers.Serializer):
    items = serializers.ListField(child=ItemSerializer())
Run Code Online (Sandbox Code Playgroud)

后来的序列化程序也可以是:

class ItemsSerializer(serializers.Serializer):
    items = ItemSerializer(many=True)
Run Code Online (Sandbox Code Playgroud)