2017-02-21 43 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