В настоящее время застрял с применением разбивки на страницы к моим Django кодам SearchView. По сути, paginate_by работает на первой странице поиска, но когда я пробую другую страницу, возникает ошибка Недействительная страница (2): эта страница не содержит результатов . Как решить его зонд?
[ urls.py ]
path('search/',SearchView.as_view(),name='search'),
[view.py]
class SearchView(ListView):
template_name = 'search.html'
context_object_name = 'object_list'
paginate_by = 2
count = 0
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context['count'] = self.count or 0
context['query'] = self.request.GET.get('search', None)
context['category'] = Category.objects.all()
context['slider'] = Slider.objects.all()
return context
def get_queryset(self):
request = self.request
query = request.GET.get('search', None)
if query is not None:
#category_results = Category.objects.search(query)
items_results = Item.objects.search(query)
# combine querysets
queryset_chain = chain(
#category_results,
items_results
)
qs = sorted(queryset_chain,
key=lambda instance: instance.pk,
reverse=True)
self.count = len(qs) # since qs is actually a objects list
return qs
return Item.objects.none() # just an empty query-set as default
[search.html]
{% if is_paginated %}
<ul>
{% if page_obj.has_previous %}
<li><a href="?page={{ page_obj.previous_page_number }}">«</a></li>
{% endif %}
<li class="active">
<a href="?page={{ page_obj.number }}">{{ page_obj.number }} </a>
</li>
{% if page_obj.has_next %}
<li><a href="?page={{ page_obj.next_page_number }}">»</a></li>
{% endif %}
</ul>
{% endif %}
Я читал документы с разбивкой на страницы, но мне это не помогло. Спасибо сообщество stackoverflow