Здесь отлично работает фильтрация и пагинатор на первой странице тоже работает нормально. Проблема возникает при переходе на следующую страницу, если она есть. На следующей странице отображаются оставшиеся данные, но если I go на следующей странице, то отображается 0.
Paginator не работает в только просмотр фильтра. Поэтому я думаю, что проблема в этом представлении только потому, что у меня один и тот же шаблон для просмотра набора запросов и списков, и там разбивка на страницы работает нормально.
EDIT: Я использую тот же шаблон с тем же именем контекста для поиска, фильтра и просмотра списка, но только в фильтре возникла проблема с разбивкой на страницы.
URL-адрес поиска выглядит следующим образом
(at first) search/?q= and in the next page search/?page=2 while going previous page search/?page=1 # this works fine
При выполнении фильтра я ожидаю того же, но это не работает. В фильтре /? Page = 2 нет данных.
просмотров
def get(self, request):
results = MyModel.objects.none()
parameter = request.GET.get('param', '')
today = datetime.datetime.today()
current_month = today.month
past_7_days = today - datetime.timedelta(days=7)
if parameter == '0':
return redirect('show_all_querysets')
elif parameter == '1':
results = MyModel.objects.filter(datetime__date=today.date()).order_by('-datetime')
elif parameter == '2':
results = MyModel.objects.filter(datetime__range=[past_7_days, today]).order_by('-datetime')
elif parameter == '3':
results = MyModel.objects.filter(datetime__month=current_month).order_by('-datetime')
querysets = Paginator(results, 10).get_page(request.GET.get('page'))
return render(request, 'show_all_querysets.html', {'querysets': querysets})
Search View
def get(self, request):
q = request.GET.get('q', '')
results = MyModel.objects.filter(message__icontains=q)).order_by('-datetime')
querysets = Paginator(results, 10).get_page(request.GET.get('page'))
return render(request, 'show_all_querysets.html', {'querysets': querysets})
template
<div class="paginate-navigate ml-3">
{% if querysets.has_previous %}
<a href="?{% if prev_url %}{{ prev_url }}{% endif %}page={{ querysets.previous_page_number}}">
<i title="previous" class="ic-chevron-left left"></i>
</a>
{% else %}
<a disabled href="#">
<i class="ic-chevron-left left"></i>
</a>
{% endif %}
{% if querysets.has_next %}
<a href="?{% if prev_url %}{{ prev_url }}{% endif %}page={{ querysets.next_page_number}}">
<i title="next" class="ic-chevron-right right ml-2"></i>
</a>
{% else %}
<a href="#">
<i class="ic-chevron-right right ml-2"></i>
</a>
{% endif %}
</div>