3

私の問題を正確に表現する方法はわかりませんが、基本的にはリストをループして最初の 4 つの一致のみを表示したいと考えています。

{% for reward_type in reward_types %}
    <h2>{{ reward_type.name }}</h2>
    <div class="reward_category">
    {% for category in reward_categories %}
        {% if category.reward_type == reward_type %}
            .
            .
            Show the first 4 matches
            .
            .
        {% endif %}
    {% endfor %}
    </div>
{% endfor %}
4

3 に答える 3

25

sliceがなければ使えたのに{% if category.reward_type == reward_type %}

つまり、category_matching_rewardsリストを持っている場合category.reward_type == reward_typeは、テンプレートで次のように実行できます

{%for category in category_matching_rewards|slice:"4" %}
       Show catgory
       ....
{%endfor%}
于 2012-09-18T09:28:33.413 に答える
4

を使用できます。ループはforloop.counterforループ内で使用可能な変数の数を設定します。

forloop.counter ループの現在の反復 (1 から始まる)

forloop.counter0 ループの現在の反復 (0-indexed)

forloop.revcounter ループの最後からの反復回数 (1 インデックス)

forloop.revcounter0 ループの最後からの反復回数 (0-indexed)

forloop.first 初めてループを通過する場合はtrue

forloop.last これがループの最後である場合はtrue

forloop.parentloopネストされたループの場合、これは現在 のループの上のループです

ソース

于 2012-09-18T09:17:37.167 に答える
-6

テンプレートに渡す前に、ビュー関数を使用してリストを準備します。

Django テンプレートは、このような複雑なマッチングを意図していません。

まさに議論したとおりです;-)

于 2012-09-18T13:31:30.583 に答える