Django过滤器-分页结果

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

我使用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 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无论如何,我想应该会有帮助。如果我的回答帮助你实现了你的问题目标,请不要忘记投票并标记为已解决。