gpt4 book ai didi

Django 过滤器 - 分页结果

转载 作者:行者123 更新时间:2023-12-05 05:12:18 27 4
gpt4 key购买 nike

我正在使用 django-filter 来输出我的模型的过滤结果。那里没有问题。下一步是添加一个分页器……尽管现在已经苦苦挣扎了好几天。

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 %}

浏览器中的结果“没有资金符合您的搜索条件”这一行..

有人可以帮忙吗?我假设两次调用 GET 请求有问题?

谢谢!

最佳答案

你正在传递一个新的上下文,其中 filter 现在是一个页面,所以当使用 {% for fund in filter.qs %} 你访问一个字段时页面对象中不存在,所以会有一个空循环。

尝试将 filter.qs 更改为仅过滤器。

它将解决分页问题,​​但随着上下文传递给渲染函数,出现了另一个问题。如下所示,您应该添加另一个上下文变量以保持您的页面显示过滤后的表单。

views.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})

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 page %}
<p>{{fund.name}} </p>

{% empty %}

No funds match your search criteria

{% endfor %}
Page {{ page.number }} of {{ page.paginator.num_pages }}

关于Django 过滤器 - 分页结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54733791/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com