python-Django模板在forloop中计数总计
作者:互联网
我在Django模板中有以下代码.
{% if levels %}
{% for l in levels %}
<tr>
<td class="level">{{ l.skill }}</td>
{% for e in employees %}
{% if e.skill_level_id == l.id %}
<td class="race">{{ forloop.counter0 }}</td>
{% endif %}
{% endfor %}
</tr>
{% endfor %}
{% endif %}
这给了我类似于以下内容(在HTML表中):
level1 1 5
level2 4 2 6 3
这表示1级(1和5)的2名员工和2级的4名员工.我想要的是每个级别的总和:
level1 2
level2 4
我不确定是否应该使用forloop.counter,forloop.counter0或forloop.parentloop.counter?还是完全不同的东西?
解决方法:
而不是循环和过滤,您应该使用regroup
将对象分组为技能级别.就像是:
{% regroup employees by skill_level as employees_by_level %}
{% for level in employees_by_level %}
<tr>
<td class="level">{{ level.grouper.skill }}</td>
<td class="count">{{ level.list|length }}</td>
{% for e in level.list %}
<td class="race">{{ forloop.counter0 }}</td>
{% endfor %}
</tr>
{% endfor %}
请注意,您首先需要让员工按skill_id排序,这样才能正常工作.
标签:django-templates,python,django 来源: https://codeday.me/bug/20191028/1954745.html