Django ListView не разбивает на страницы, несмотря на то, что paginate_by установлен - PullRequest
0 голосов
/ 23 января 2020

Django v3.0

Просмотр:

class UnreadListView(ListView):
    """
    View to show all unread feed items
    """
    model = FeedItem
    template_name = 'rss/unread_feeds.html'
    paginate_by = 15

    def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        context = super().get_context_data(**kwargs)
        context['unread_feeds'] = FeedItem.objects.filter(
            is_archived=False).order_by('-published')
        return context

Когда я печатаю, если разбит на страницы в шаблоне, это возвращается как истина. Я не уверен, как поступить.

1 Ответ

0 голосов
/ 23 января 2020

Полагаю, вы используете переменную unread_feeds в своем шаблоне. Этот набор запросов не будет разбит на страницы, потому что в вашем запросе вы не делаете никакой разбивки на страницы. Django ListView применяет разбиение на страницы к набору запросов, который хранится в словаре context под ключом object_list.

Если вы хотите этот набор запросов (тот, который Django 's ListView buidls для вас) с именем unread_feeds в вашем шаблоне, затем установите для атрибута context_object_name вашего представления это значение, то есть context_object_name = 'unread_feeds'.

Если дополнительно вы хотите выполнить пользовательскую фильтрацию для этого queryset, вы должны переопределить метод get_queryset() вашего представления.

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

...