不确定如何说出我的问题,但我基本上想要遍历列表并仅显示前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 %}
答案 0 :(得分:22)
如果没有{% if category.reward_type == reward_type %}
,您可以使用slice
。
即。如果您的category_matching_rewards
列表中包含category.reward_type == reward_type
,那么在模板中可以将其作为
{%for category in category_matching_rewards|slice:"4" %}
Show catgory
....
{%endfor%}
答案 1 :(得分:4)
您可以使用forloop.counter
,for
循环设置循环中可用的一些变量:
forloop.counter
循环的当前迭代(1索引)
forloop.counter0
循环的当前迭代(0索引)
forloop.revcounter
循环结束时的迭代次数(1索引)
forloop.revcounter0
循环结束时的迭代次数(0索引)
forloop.first
True 如果这是第一次通过循环
forloop.last
True 如果这是最后一次循环
forloop.parentloop
对于嵌套循环,这是上面的循环当前的循环
答案 2 :(得分:-4)
使用视图功能准备列表,然后再将其传递给模板。
Django模板不适用于这样的复杂匹配。
正如所讨论的那样; - )