Django过滤器-分页结果
我使用django过滤器输出模型的过滤结果。没有问题。 下一步是添加分页器。。虽然挣扎了好几天 views.py:Django过滤器-分页结果,django,pagination,django-filter,django-pagination,Django,Pagination,Django Filter,Django Pagination,我使用django过滤器输出模型的过滤结果。没有问题。 下一步是添加分页器。。虽然挣扎了好几天 views.py: def funds_overview(request): f = FundFilter(request.GET, queryset=Fund.objects.all()).qs paginator = Paginator(f, 5) page = request.GET.get('page') funds = paginator.get_page(page) return
def funds_overview(request):
f = FundFilter(request.GET, queryset=Fund.objects.all()).qs
paginator = Paginator(f, 5)
page = request.GET.get('page')
funds = paginator.get_page(page)
return render(request, 'funds/funds.html', {'filter': funds})
funds.html:
<form method="get">
<div class="well">
<h4 style="margin-top: 0">Search Criteria</h4>
<div class="row">
<div class="form-group col-sm-4 col-md-3">
{{ filter.form.fund_name.label_tag }}
{% render_field filter.form.fund_name class="form-control" %}
</div>
</div>
<button type="submit" class="btn btn-primary">
<span class="glyphicon glyphicon-search"></span> Search
</button>
{% for fund in filter.qs %}
<p>{{fund.name}} </p>
{% empty %}
No funds match your search criteria
{% endfor %}
搜索条件
{{filter.form.fund_name.label_tag}
{%render_field filter.form.fund_name class=“form control”%}
搜寻
{filter.qs%中的资金为%s}
{{fund.name}
{%empty%}
没有与您的搜索条件匹配的资金
{%endfor%}
结果显示在浏览器中
行“没有与您的搜索条件匹配的资金”
有人能帮忙吗?我想两次调用GET请求都有问题吧
谢谢 您正在传递一个新的上下文,其中过滤器现在是一个页面,因此当使用
{%for fund in filter.qs%}
访问页面对象中不存在的字段时,将出现一个空循环
尝试更改“仅过滤器”的过滤器.qs
它将解决分页问题,但在将上下文传递给render函数时会出现另一个问题。如下所示,您应该添加另一个上下文变量,以保持页面显示筛选的表单
视图.py:
def funds_overview(request):
funds = FundFilter(request.GET, queryset=Fund.objects.all()).qs
paginator = Paginator(f, 5)
page = request.GET.get('page')
fund_page = paginator.get_page(page)
return render(request, 'funds/funds.html', {'filter': funds, 'page': fund_page})
<form method="get">
<div class="well">
<h4 style="margin-top: 0">Search Criteria</h4>
<div class="row">
<div class="form-group col-sm-4 col-md-3">
{{ filter.form.fund_name.label_tag }}
{% render_field filter.form.fund_name class="form-control" %}
</div>
</div>
<button type="submit" class="btn btn-primary">
<span class="glyphicon glyphicon-search"></span> Search
</button>
{% for fund in page %}
<p>{{fund.name}} </p>
{% empty %}
No funds match your search criteria
{% endfor %}
Page {{ page.number }} of {{ page.paginator.num_pages }}
funds.html:
def funds_overview(request):
funds = FundFilter(request.GET, queryset=Fund.objects.all()).qs
paginator = Paginator(f, 5)
page = request.GET.get('page')
fund_page = paginator.get_page(page)
return render(request, 'funds/funds.html', {'filter': funds, 'page': fund_page})
<form method="get">
<div class="well">
<h4 style="margin-top: 0">Search Criteria</h4>
<div class="row">
<div class="form-group col-sm-4 col-md-3">
{{ filter.form.fund_name.label_tag }}
{% render_field filter.form.fund_name class="form-control" %}
</div>
</div>
<button type="submit" class="btn btn-primary">
<span class="glyphicon glyphicon-search"></span> Search
</button>
{% for fund in page %}
<p>{{fund.name}} </p>
{% empty %}
No funds match your search criteria
{% endfor %}
Page {{ page.number }} of {{ page.paginator.num_pages }}
搜索条件
{{filter.form.fund_name.label_tag}
{%render_field filter.form.fund_name class=“form control”%}
搜寻
{第%页中的资金为%}
{{fund.name}
{%empty%}
没有与您的搜索条件匹配的资金
{%endfor%}
第{{Page.paginator.num_pages}页中的第{{Page.number}页
我发布了一个答案,显示您的模板中某个页面的使用存在问题,是否有帮助?嗨,Bernardo。这在一定程度上有所帮助:现在我看到了数据库的前5行。虽然没有“第1页,共2页”或类似内容,而且(与以前一样)搜索字段/表单没有appear@TMD我已经更新了答案,为您的案例提供了可能的解决方案。谢谢Bernardo。现在它确实显示了“第x页,共y页”,尽管我不能翻阅它。@TMD,我相信,这将是一个完全不同的问题,我认为你最好先自己尝试一下;D无论如何,我想应该会有帮助。如果我的回答帮助你实现了你的问题目标,请不要忘记投票并标记为已解决。