Следующие отношения "назад" в контекстном процессоре - PullRequest
0 голосов
/ 11 июня 2011

Я сделал шаблонный процессор, использующий обратную обратную связь.В оболочке все работает нормально, но в представлении у меня есть ошибка:

У объекта 'ParentCategory' нет атрибута 'postpages_set'

модель (немного проще, чеморигинал)

class ParentCategory(models.Model):
    category = models.CharField(max_length = 150)


class PostPages(models.Model):
    parent_category = models.ForeignKey('ParentCategory',
                                    blank = True,
                                    null = True,                                       
                                    related_name = "parent_category")
    title = models.CharField(max_length = 150)
    text = models.TextField()

контекстный процессор

from shivablog.shivaapp.models import ParentCategory

def menu_items(request):
    output_categories = {}
    category_list = ParentCategory.objects.all()
    for category in category_list:
        output_categories[category] = category.postpages_set.all()
    return {'output_categories': output_categories}

в оболочке:

>>> output = {}
>>> cat_list = ParentCategory.objects.all()
>>> for cat in cat_list: 
...     output[cat] = cat.postpages_set.all()
... 
>>> output
{<ParentCategory: category#1>: [<PostPages: Post 1>, <PostPages: post 2>],         <ParentCategory: category #2>: [], <ParentCategory: category #3>: []}

Что не так?В чем разница между оболочкой и видом таким образом?

1 Ответ

1 голос
/ 11 июня 2011

Вы явно переименовали менеджер связанных объектов, используя related_name, поэтому он теперь называется parent_category:

cat.parent_category.all()

Это, конечно, очень вводящее в заблуждение имя - я не знаю, почему вы вообще установили related_name.

Что касается того, почему он не появляется в оболочке, я могу только предположить, что вы внесли изменения в код без перезапуска вашей оболочки.

Наконец, однако, я не знаю, почему вы хотите это сделать, так как вы можете так же легко получить доступ к связанным объектам в шаблоне:

{% for category in output_categories %}{{ category.parent_category.all }}{% endfor %}
...