2017-02-21 41 views
0

爲什麼我無法使用page.item_set獲取頁面模型的相關項目? 我得到以下錯誤:無法獲取相關設置

'Page' object has no attribute 'item_set' 

我的代碼:

class Page(models.Model): 
    survey = models.ForeignKey(Survey) 
    title = models.CharField(max_length=256) 
    parent = models.ForeignKey("Page", blank=True, null=True, related_name="parent_page") 

    def __unicode__(self): 
     return self.title 

class Item(models.Model): 
    page = models.ForeignKey(Page, related_name="item") 
    key = models.CharField(max_length=256) 
    value = models.CharField(max_length=256) 
    image = models.ImageField(upload_to="builder/item", null=True, blank=True) 
    options = models.ManyToManyField(Option, blank=True) 
    goto = models.ForeignKey(Page, null=True, blank=True, related_name="goto_page") 

    def __unicode__(self): 
     return self.value 

回答

2

因爲你已經命名的關係,而不是item。改爲嘗試page.item.all()

related_name默認爲類名的小寫版本,其中_set附加到它。但是,正如您已經注意到的那樣,您可以在需要時覆蓋它。

1

您的related_name項目是「item」,而不是「item_set」,因此您可以撥打Page.item。要獲得所有物品,您可以這樣稱呼Page.item.all()。如果您忽略Item.page字段上的related_name屬性,則名稱將默認爲item_set