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ページでフィルターを適用すると、フィルターは「page」GET変数も渡すため、フィルター処理されたページではすでに5ページにいます。これは誤りです。 。 フィルタを適用するときにdjango-paginationが使用する変数をURLから除外する方法はありますか? これが理にかなっていることを願っています...

mdgart、

jQueryとjQueryBack 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は「page」のgetパラメーターを1に強制します。

私の例では、すべてのフィルターがリンクとして表示され、IDが「changelist-filter」のdiv内にあります。 必要に応じてjQueryセレクターを変更する必要があります。

お役に立てれば。

mdgart、jonathonadler、

JavaScriptに依存しないように、少し異なる方法でページ変数の問題を解決しました。単に「page」パラメーターをFilterSetに渡さないでください。 たとえば、ドキュメントの例に基づいて:
def product_list(request):
データ= request.GET.copy()
データの「ページ」の場合:
デルデータ['ページ']
f = ProductFilter(data、queryset = Product.objects.all())
render_to_response( 'my_app / template.html'、{'filter':f})を返します
助けてくれることを願っています。

非常にきちんとしたソリューションrichardbarran、ありがとう!

ありがとう。 django-paginationについて話すためにドキュメントにパッチを適用することを考えましたが、小さな問題があります。ドキュメントの形式は何ですか? :-(
docutilsが(少なくとも私のコンピューターでは)それについて不平を言っているので、それは最初ではありません。 助言がありますか?

リチャード、それは最初ですが、スフィンクス(http://sphinx.pocoo.org/)を使用して処理する必要があります。

autopaginateタグを使用すると、「タイプ 'fooFilter'のオブジェクトにlen()がありません」タイプエラーが発生します。 django-paginationを使用せずにループしてオブジェクトを表示できるため、確実な結果が得られたと確信しています。 どうすれば修正できますか? ありがとう!

素晴らしい、私に多くの時間を節約してくれたおかげで。

一緒に機能するdjango-paginationとdjango-sortingへのgithubリンクを教えてください。これらのリポジトリのいくつかを試しましたが成功しませんでした。 私は:を取得します

/ ads / search /のTemplateSyntaxError
レンダリング中にVariableDoesNotExistがキャッチされました:u '[{}、{\' csrf_token \ '..のキー[sorted_objects]のルックアップに失敗しました。

このテンプレートを使用する

    {% 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 /のTemplateSyntaxError
レンダリング中にVariableDoesNotExistがキャッチされました:u '[{}、{\' csrf_token \ '..のキー[sorted_objects]のルックアップに失敗しました。

このテンプレートを使用する

  {% 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-filter == 0.5.3
django-pagination == 1.0.7
-e git://github.com/lukeman/django-sorting.git#egg = django_sorting

私のフォークを使ってみてください:
https://github.com/camilonova/django-sorting

ジェネリックビューを使用してdjango-filterでページ付けと並べ替えを使用できるかどうか誰かが知っていますか? これらの例から、汎用ビューメソッドが使用されていないことがわかります。

私があなたの質問を理解しているなら、それは可能です、私はここでそれを使います: https

誰かが興味を持っている場合に備えて、私はdjango-sorterと呼ばれるdjango-sortingのはるかに完全な代替品を作成しました: http

課題追跡システムを利用する一環として、これを閉じます。 前回のコメントから2年以上経ちました。

現在のページ付け/並べ替えソリューションとの統合を示すドキュメントを更新するプルリクエストを送信したい場合は、確認していただけれ

それが理にかなっていることを願っています。

ありがとう!!!

このページは役に立ちましたか?
0 / 5 - 0 評価