2017-02-21 35 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 is "item", а не "item_set", поэтому вы бы назвали Page.item. Чтобы получить все предметы, вы можете позвонить Page.item.all() таким образом. Если вы опускаете атрибут related_name на поле Item.page, имя будет по умолчанию равно item_set.