6

それができない場合、ページごとに複数のページネーションを許可する他の代替手段 (Django のネイティブ ページネーションまたは代替パッケージ) はありますか?

各オブジェクトが独自のページネーション コンテキストを持つ約 5 つのオブジェクトのリストを表示したいと思います。

便宜上、django-pagination のドキュメントを次に示します。

4

2 に答える 2

8

この投稿が古いことは知っていますが、それでも関連性があります。以下は Django 1.9 で動作します。

これはそれを行う方法です、

ビュー.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)

上記で重要なのは「page1」と「page2」です。

テンプレートでは、

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

再び「page1」と「page2」を使用して、各モデルのページネーションを区別します。

于 2016-06-14T16:12:15.650 に答える
6

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

于 2012-05-09T08:48:18.407 に答える