Django Сохранение одного и того же фильтра в пагинации
Я просмотрел предыдущие вопросы об этом, но не нашел точного ответа на мою проблему, так как я не использую django-filters.
Я применяю фильтры к странице поиска и использую пагинацию. Конечно, при переходе на следующую страницу все фильтры сбрасываются. Я хочу иметь возможность включать те же фильтры при переходе от страницы к странице. Вот мой код:
views.py:
def recherche(request):
filters = {
'intermediaire__name__icontains': request.POST.get('kw_intemediaire'),
'assurance__name__icontains': request.POST.get('kw_assurance'),
'matricule__icontains': request.POST.get('kw_matricule'),
'numero__icontains' : request.POST.get('kw_numero'),
'created_by__name__icontains' : request.POST.get('kw_created_by'),
'date_posted__icontains' : request.POST.get('kw_date_posted'),
}
filters = {k: v for k, v in filters.items() if v}
dossiers = Dossier.objects.filter(**filters)
print(filters)
p = Paginator(dossiers, 10)
page_num = request.GET.get('page', 1)
try:
dossiers = p.page(page_num)
except EmptyPage:
dossiers = p.page(1)
context = {
'dossiers': dossiers,
'intermediaires': Intermediaire.objects.all(),
'assurances': Assurance.objects.all(),
}
return render(request, "dashboard/recherche.html", context)
Шаблон:
<div class="pagination">
{% if dossiers.has_previous %}
<a href="?page=1">Première page</a>
<a href="?page={{ dossiers.previous_page_number }}">«</a>
{% endif %}
<p class="active">Page {{ dossiers.number }} sur {{ dossiers.paginator.num_pages }}</p>
{% if dossiers.has_next %}
<a href="?page={{ dossiers.next_page_number }}">»</a>
<a href="?page={{ dossiers.paginator.num_pages }}">Dernière page</a>
{% endif %}
</div>
Я хочу сделать это: Я добавил print(filters)
в представление, чтобы посмотреть, как проходят фильтры, и они печатаются следующим образом: {'assurance__name__icontains': 'RMA Assurance'}
. Все, что я хочу сделать, это взять этот словарь, извлечь различные поля и передать их в качестве параметров GET запроса в урлах пагинации. Как вы можете видеть, у меня не один параметр, а 6, которые могут быть применены одновременно.