python - Django在分页中保持相同的过滤器
问题描述
我查看了有关此问题的先前问题,但由于我没有使用 django-filters,因此没有找到问题的确切答案。
我正在将过滤器应用于搜索页面,并且正在使用分页。当然,当您移至下一页时,所有过滤器都会重置。当我们从一个页面移动到另一个页面时,我希望能够包含相同的过滤器。这是我的代码:
视图.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 请求参数传递到分页 URL 中。如您所见,我没有一个参数,而是 6 个,可以同时应用。
解决方案
推荐阅读
- linux - 如果目录不存在,脚本会意外退出
- php - 数据 url 中的引导表 urlencode() 不起作用
- java - 我如何调用 RestFull webservice Java 使用 ajax html
- php - 我不能使用 ajax 在我的数据中使用引导实时搜索
- c - 我的 Linux 内核模块没有收到正确的用户空间应用程序 PID
- angular - 如何在更改双向绑定模型后向模板驱动的表单添加自定义错误?
- c# - 标识 dbcontext 对另一个 dbcontext 的引用
- android - 错误:找不到 Google Analytics global_tracker 的符号变量 xml
- crystal-reports - 如何在每个日期中选择每个时间的第一个数据?关于水晶报告
- javascript - Javascript Prop 函数在 IE 11 中不起作用