Django Paginate_by не отображает правильную пагинацию

Здравствуйте, у меня есть страница, использующая paginate_by 10, и вместо этого я получаю только 9 элементов на страницу, хотя в инспекторе элементов я вижу 10 мест в сетке, я просто могу заполнить 9 из 10, затем она переходит на следующую страницу.

Views.py

class VideoListView(generic.ListView):
model = Video
template_name = 'index.html'
context_object_name = 'video_list'
paginate_by = 10

def get_queryset(self):
    return Video.objects.order_by('-date')

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['category_list'] = Category.objects.all()
    return context

Причина, по которой это происходит, заключается в том, что вы фильтруете в шаблоне, поэтому после набора запросов происходит пагинация. Фильтрация в шаблоне - не самая лучшая идея, например, потому что это сделает пагинацию неправильной, но это также неэффективно.

Вы должны фильтровать в представлении, с помощью:

class VideoListView(generic.ListView):
    model = Video
    queryset = Video.objects.filter(home=True).order_by('-date')
    template_name = 'index.html'
    context_object_name = 'video_list'
    paginate_by = 10
    
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['category_list'] = Category.objects.all()
        return context

и таким образом удалить часть {% if video.home == True %} … {% endif %}.

Вернуться на верх