2015-01-16 66 views
3

序列化的「對象名單」我需要一個串行這樣的事情:如何在Django的REST框架

{ 
    "items": { 
     12: { 
      "name": "item 1" 
     }, 
     66: { 
      "name": "item 2" 
     } 
    } 
} 

我應該如何申報我的串行得到這樣的事情?這是甚至是一個有效的JSON或應該看起來像這樣:

{ 
    "items": [ 
     { 
      "name": "item 1", 
      "id": 12 
     }, { 
      "name": "item 2" 
      "id": 66 
     } 
    ] 
} 

? (12,66是那些「項目」的主鍵)使用 Django的REST框架3.

+0

第一個是不是一個有效的JSON。點擊這裏[jsonlint](http://pro.jsonlint.com/)。對象'key'必須始終是一個字符串。所以'12'應該至少是''12「'。第二個很容易生產。發佈你的模型,我會幫助。 –

回答

7

有一個ListField在Django的REST框架3,您可以點擊這裏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()) 

後來的串行可也:

class ItemsSerializer(serializers.Serializer): 
    items = ItemSerializer(many=True)