他们俩合作得很好,我花了一段时间才弄明白。 基于文档中的示例:
{% block content %}
<form action="" method="get">
{{ f.form.as_p }}
<input type="submit" />
</form>
{% autopaginate f.qs 40 as filter_list %}
{% for obj in filter_list %}
{{ obj.name }} - ${{ obj.price }}<br />
{% endfor %}
{% paginate %}
{% endblock %}
关键是你必须使用分页的 _as_ 参数。
非常,非常有用。 谢谢你。
我建议也记录它如何与 django-sorting 一起使用。 不幸的是,django-sorting 需要在分页之前进行,并且不支持 'as' 关键字,所以我们_不_能够做这样的事情:
{% autosort f.qs as actionlog %}
{% autopaginate actionlog 30 %}
在http://github.com/directeur/django-sorting/issues/#issue/4上游提交
django-pagination 存在一个问题:例如,当您在第 5 页并应用过滤器时,过滤器也会传递“页面”GET 变量,因此在过滤后的页面中您已经在第 5 页,这是错误的. 有没有办法从 url 中排除应用过滤器时 django-pagination 使用的变量? 希望这是有道理的...
玛德加特,
我使用 jQuery 和 jQuery Back Button & Query (BBQ) 库解决了客户端上的页面变量问题。 请参阅: http :
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript" src="{{ MEDIA_URL }}js/jquery.ba-bbq.min.js"></script>
<script type="text/javascript">
// on page load complete
$(function(){
// force all filter links to return to page 1
$('#changelist-filter a').querystring('page=1');
});
</script>
当用户单击过滤器链接时,javascript 会强制“页面”的 get 参数为 1。
在我的示例中,我的所有过滤器都显示为链接,位于 ID 为“changelist-filter”的 div 中。 您需要根据需要更改 jQuery 选择器。
希望这可以帮助。
米德加特, 乔纳森纳德勒,
我以稍微不同的方式解决了页面变量问题,避免了依赖 javascript:只是不要将“页面”参数传递给 FilterSet。 例如,基于文档中的示例:
定义产品列表(请求):
数据 = request.GET.copy()
如果数据中的“页面”:
删除数据['页面']
f = ProductFilter(data, queryset=Product.objects.all())
return render_to_response('my_app/template.html', {'filter': f})
希望有所帮助。
非常简洁的解决方案richardbarran,谢谢!
谢谢。 我想修补文档来谈论 django-pagination,但我有一个小问题:文档是什么格式的? :-(
这不是第一次,因为 docutils 抱怨它(至少在我的电脑上)。 有什么建议?
理查德,它是第一个,但需要使用 sphinx (http://sphinx.pocoo.org/) 进行处理。
当我使用自动分页标签时,我得到“'fooFilter' 类型的对象没有 len()”类型错误。 我确定我已经得到了 enurable 结果,因为我可以遍历它并在不使用 django-pagination 的情况下显示对象。 我该如何解决? 谢谢!
太好了,节省了我很多时间,谢谢。
你能给我 django-pagination 和 django-sorting 的 github 链接,它们可以一起工作吗?我尝试了其中的一些存储库,但没有成功。 我得到一个:
/ads/search/ 处的模板语法错误
渲染时捕获 VariableDoesNotExist:在 u'[{}, {\'csrf_token\' ...
使用这个模板
{% autosort filter.qs as sorted_objects %}
{% autopaginate sorted_objects 10 as object_list %}
{% for object in object_list %}
{{ object }}
{% endfor %}
{% paginate %}
<ul>
<li>{% anchor price "First Field" %}</li>
<li>{% anchor surface "Other Field" %}</li>
</ul>
谢谢 !
抱歉,我没有使用过 django-sorting,所以帮不上忙。
祝你好运!
NB
你能给我 django-pagination 和 django-sorting 的 github 链接,它们可以一起工作吗?我尝试了其中的一些存储库,但没有成功。 我得到一个:
/ads/search/ 处的模板语法错误
渲染时捕获 VariableDoesNotExist:在 u'[{}, {\'csrf_token\' ...使用这个模板
{% autosort filter.qs as sorted_objects %} {% autopaginate sorted_objects 10 as object_list %} {% for object in object_list %} {{ object }} {% endfor %} {% paginate %} <ul> <li>{% anchor price "First Field" %}</li> <li>{% anchor surface "Other Field" %}</li> </ul>
谢谢 !
所以,这是我上一个问题的一个有效的 pip 要求示例:
django-过滤器==0.5.3
django-分页==1.0.7
-e git://github.com/lukeman/django-sorting.git#egg =django_sorting
有谁知道使用通用视图是否可以使用 django-filter 进行分页和排序? 我从这些示例中看到没有使用通用视图方法。
如果我理解你的问题,有可能,我在这里使用它: https :
如果有人感兴趣,我写了一个更完整的 django-sorting 替代品,称为 django-sorter: http :
作为掌握问题跟踪器的一部分,我将关闭这个。 距离上次评论已经过去 2 年多了。
如果有人想发送更新显示与当前分页/排序解决方案集成的文档的拉取请求,我真的很乐意查看,但除此之外,下次出现_IRL_ 时我会回到这个问题。
我希望这是有道理的。
谢谢!!!
最有用的评论
非常,非常有用。 谢谢你。