基于条件的Django模板迭代/循环计数

时间:2018-05-04 10:01:17

标签: django django-templates

我试图根据条件在Django中创建一个类似于$i==0; $i++;的迭代。

{% for item in event.products %}         
{% if item.category = "Treat" %}

现在 - 我希望能够告诉我们满足这个条件的次数(category = treat)以及如何在匹配该循环的2个项目之后停止for循环。

谢谢!

2 个答案:

答案 0 :(得分:0)

django模板系统不允许for循环中断或设置计数器,即使elsewhere显示如何在某些情况下克服此限制或如何create新模板标记可以帮助您,也许您可​​以事先计算出您的要求,并通过在视图中切片来准备要打印的列表。

答案 1 :(得分:0)

我同意@DRC,这种业务逻辑最好在您的视图代码中完成,而不是在模板中完成。

如果您仍需要模板解决方案:

{% regroup event.products by item.category as grouped_products %}

{% for group in grouped_products %}
    {% if group.grouper == "Treat" %}
        {% for item in group.list|slice:":2" %}
            {{ item.imageURL }}
        {% endfor %}
    {% endif %}
{% endfor %}

sliceregroup的文档。