Django-filter: 记录 django-filter 如何与 django-pagination 一起工作

创建于 2009-08-13  ·  20评论  ·  资料来源: carltongibson/django-filter

他们俩合作得很好,我花了一段时间才弄明白。 基于文档中的示例:

{% 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_ 参数。

最有用的评论

非常,非常有用。 谢谢你。

所有20条评论

非常,非常有用。 谢谢你。

我建议也记录它如何与 django-sorting 一起使用。 不幸的是,django-sorting 需要在分页之前进行,并且不支持 'as' 关键字,所以我们_不_能够做这样的事情:

{% autosort f.qs as actionlog %}
{% autopaginate actionlog 30 %}

http://github.com/directeur/django-sorting/issues/#issue/4上游提交

当我尝试上述操作时出现此问题。

http://code.google.com/p/django-pagination/issues/detail?id=59#c0

关于它可能是什么的任何想法?

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

尝试使用我的叉子:
https://github.com/camilonova/django-sorting

有谁知道使用通用视图是否可以使用 django-filter 进行分页和排序? 我从这些示例中看到没有使用通用视图方法。

如果我理解你的问题,有可能,我在这里使用它: https :

如果有人感兴趣,我写了一个更完整的 django-sorting 替代品,称为 django-sorter: http :

作为掌握问题跟踪器的一部分,我将关闭这个。 距离上次评论已经过去 2 年多了。

如果有人想发送更新显示与当前分页/排序解决方案集成的文档的拉取请求,我真的很乐意查看,但除此之外,下次出现_IRL_ 时我会回到这个问题。

我希望这是有道理的。

谢谢!!!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

loganknecht picture loganknecht  ·  4评论

GuillaumeCisco picture GuillaumeCisco  ·  3评论

sassanh picture sassanh  ·  4评论

blueyed picture blueyed  ·  4评论

chromakey picture chromakey  ·  5评论