2016-04-25 44 views
2

我試圖在Django REST框架中設置嵌套序列化,但在遵循文檔中的簡短指南http://www.django-rest-framework.org/api-guide/relations/#nested-relationships之後,我在序列化數據中有沒有變化Django REST框架嵌套序列化沒有效果

models.py

class Franchise(models.Model): 
    id = models.AutoField(primary_key=True) 
    name = models.CharField(max_length=255) 


class Item(models.Model): 
    id = models.AutoField(primary_key=True) 
    franchise = models.ForeignKey(Franchise, on_delete=None) 
    title = models.CharField(max_length=255) 

初始 serializers.py

class ItemListSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Item 
     fields = ('id', 'franchise', 'title') 


class FranshiseDetailSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Franchise 
     fields = ('id', 'name', 'items') 

當我查詢ItemListSerializer與查詢集我找回預期

[ 
    { 
     "id": 1, 
     "franchise": 1, 
     "title": "Item 1", 
    }, 
    { 
     "id": 2, 
     "franchise": 1, 
     "title": "Item 2" 
    }, 
    { 
     "id": 3, 
     "franchise": 2, 
     "title": "Item 3", 
    } 
] 

預計結果時,我查詢FranchiseDetailSerializer與預先存在的特許經營對象。

{ 
    "id": 1, 
    "name": "Franchise 1" 
} 

現在,當我改變FranchiseDetailSerializer,按嵌套關係DRF指南:

class FranshiseDetailSerializer(serializers.ModelSerializer): 
    items = ItemListSerializer(many=True, read_only=True) 

    class Meta: 
     model = Franchise 
     fields = ('id', 'name', 'items') 

我期望得到以下結果:

{ 
    "id": 1, 
    "name": "Franchise 1" 
    "items": [ 
     {"id": 1, "title": "Item 1", "franchise": 1}, 
     {"id": 2, "title": "Item 2", "franchise": 1} 
    ] 
} 

但是,相反,我得到沒有變化,好像我根本沒有更新FranchiseDetailSerializer

{ 
    "id": 1, 
    "name": "Franchise 1" 
} 

這個對我來說,最糟糕的是,我不得到任何類型的錯誤,我根本沒有看到結果

任何和所有的幫助表示讚賞,謝謝。

回答

4

其實你錯過了文檔:)

專輯= models.ForeignKey(相冊,related_name = '跟蹤')

的一小部分在定義related_nameForeignKey

franchise = models.ForeignKey(Franchise, on_delete=None, related_name='items') 

之後,東西開始爲我工作。

+1

太棒了,工作,非常感謝:) – 99lives

相關問題