Я создал настраиваемую разбивку на страницы с набором запросов, используя ListView CBV в Django, но не могу находить объекты на страницах - PullRequest
0 голосов
/ 09 июля 2020

В настоящее время застрял с применением разбивки на страницы к моим 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 }}">&laquo;</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 }}">&raquo;</a></li>
    {% endif %}
</ul>
{% endif %}

Я читал документы с разбивкой на страницы, но мне это не помогло. Спасибо сообщество stackoverflow

...