2012-05-09 7 views
5

それ以外の方法(Djangoのネイティブページネーションか別のパッケージのいずれか)が存在しない場合は、ページごとに複数のページ付けが可能ですか?ジャンゴページネーションはページごとに複数のページ区切りを行うことができますか?

約5つのオブジェクトのリストを、それぞれのオブジェクトが独自のページ区切りコンテキストを持つように表示したいとします。

便宜のため、ここにはdocumentation for django-paginationがあります。

+0

私は同じことを探しています。何か見つけましたか? – andyzinsser

答えて

5

もちろん、可能です。私はdjango-paginationパッケージについては話すことができませんが、デフォルトのDjangoのPaginatorクラスを使用することは間違いありません。ビューの中に必要な数だけ作成することができます。別々のGETパラメータを選択して、それぞれのページを指定すればいいです。

4

私はこの投稿が古いと知っていますが、まだ関連性があります。次はDjango 1.9で動作します。

これは、上記の重要なことは、 'ページ1' と 'ページ2' です

views.py

def myview(): 
    Model_one = Model.objects.all() 
    paginator = Paginator(Model_one, 6) 
    page = request.GET.get('page1') 
    try: 
     Model_one = paginator.page(page) 
    except PageNotAnInteger: 
     Model_one = paginator.page(1) 
    except EmptyPage: 
     Model_one = paginator.page(paginator.num_pages) 

    Model_two = Model_other.objects.all() 
    paginator = Paginator(Model_two, 6) 
    page = request.GET.get('page2') 
    try: 
     Model_two = paginator.page(page) 
    except PageNotAnInteger: 
     Model_two = paginator.page(1) 
    except EmptyPage: 
     Model_two = paginator.page(paginator.num_pages) 

    context = {'Model_one': Model_one, 'Model_two': Model_two} 
    return render(request, 'template.html', context) 

、それを行う方法です。テンプレートに

{% if model_one %} 
     <div class="col-md-12 well"> 
     {% for item in model_one %} 
     ..... iterates through model_one..... 
     {% endfor %} 
     <span class="step-links pagination"> 
      {% if model_one.has_previous %} 
       <a href="?page1={{ model_one.previous_page_number }}"> previous </a> 
      {% endif %} 
      <span class="current"> 
       Page {{ model_one.number }} of {{ model_one.paginator.num_pages }} 
      </span> 
      {% if model_one.has_next %} 
       <a href="?page1={{ model_one.next_page_number }}"> next </a> 
      {% endif %} 
     </span> 
     </div> 
     {% endif %} 
     {% if model_two %} 
     <div class="col-md-12 well"> 
     {% for item in model_two %} 
     ..... iterates through model_two..... 
     {% endfor %} 
     <span class="step-links pagination"> 
      {% if model_two.has_previous %} 
       <a href="?page2={{ model_two.previous_page_number }}"> previous </a> 
      {% endif %} 
      <span class="current"> 
       Page {{ model_two.number }} of {{ model_two.paginator.num_pages }} 
      </span> 
      {% if model_two.has_next %} 
       <a href="?page2={{ model_two.next_page_number }}"> next </a> 
      {% endif %} 
     </span> 
     </div> 
     {% endif %} 

が再度各モデルのページ付けを区別するために「ページ1」と「PAGE2」を使用。

+1

良い1、ありがとう – Sakeer

+1

これは1.4でもうまくいきます – af3ld

関連する問題