Функция extra_context для простого общего представления в Django
У меня есть моя страница, где у меня есть список сообщений, и я также хочу иметь боковую панель с предложениями. Я использовал общий ListView для своих постов, и мне нужно было как-то передавать предложения, поэтому я использовал extra_context, который должен (?) Работать так, как показано в нескольких примерах, которые я прочитал, но в шаблоне нет объекта "предложения".
class PostList(generic.ListView):
model = models.Post
paginate_by = 10
context_object_name = 'mj'
def get_queryset(self):
return models.Post.objects.filter(user = self.request.user)
def extra_context(self):
return {'suggestions':models.Pla.objects}
У меня нет опыта в django, поэтому, возможно, есть лучший способ передать предложения для боковой панели. Может быть, это можно сделать с помощью функции представления обтекания, так как я хочу иметь предложения..
1 ответ
Представления на основе классов не используют extra_context
как это делали старые основанные на функциях общие представления. Вместо этого, обычный способ сделать это с помощью get_context_data
звоните, как показано в документации:
https://docs.djangoproject.com/en/dev/topics/class-based-views/generic-display/
Пример в документации - почти то, что вы пытаетесь сделать. Вы можете последовать его примеру и передать набор запросов (models.Pla.objects.all()
) а не объект менеджера (models.Pla.objects
).