Функция 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).

Другие вопросы по тегам