无法获得相关设置

时间:2017-02-21 16:19:50

标签: django django-models

为什么我不能使用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 个答案:

答案 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