为什么我不能使用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
答案 0 :(得分:2)
因为您已将关系命名为item
。请改为page.item.all()
。
related_name
默认为附加_set
的小写版本的类名。然而,正如您所注意到的,您可以在需要时覆盖它。
答案 1 :(得分:1)
您的related_name
项目是“item”,而不是“item_set”,因此您可以致电Page.item
。要获取所有项目,您可以通过这种方式拨打Page.item.all()
。如果您省略了related_name
字段中的Item.page
属性,则该名称将默认为item_set
。