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.counter,for循环设置循环内可用的许多变量:

forloop.counter 循环的当前迭代(1-indexed)

forloop.counter0 循环的当前迭代(0-indexed)

forloop.revcounter 从循环结束的迭代次数(1-indexed)

forloop.revcounter0 从循环结束的迭代次数(0-indexed)

forloop.first 如果这是第一次通过循环,则为

forloop.last 如果这是最后一次循环,则为

forloop.parentloop 对于嵌套循环,这是当前循环之上的循环

来源

于 2012-09-18T09:17:37.167 回答
-6

在将列表传递给模板之前,使用您的视图函数准备列表。

Django 模板不适用于像这样的复杂匹配。

与讨论的完全一样;-)

于 2012-09-18T13:31:30.583 回答