在这里我从数据库中获取具有持续时间的员工。同一员工有2或3条记录。
因此,获取员工工期并进行添加和显示,如果更改了员工ID,则
再次计算员工工期并显示
我需要通过{{ forloop.counter }}查找每个员工ID分别具有多少条记录

这是我的问题


如果我的循环到达{% ifchanged eachSc.laEmpNum %},则{{ result.0 }}。如果又是{{ result.1 }}{{ result.2 }},依此类推...
如果我的循环到达{% ifchanged eachSc.laEmpNum %},则我的{{ forloop.counter }}应该再次从0(零)开始。


我从result = [5.5, 4.5, 1.3]获得的view.py

{% for eachSc in DBShots1 %}

<tr>
    {% ifchanged eachSc.laEmpNum %}

    <td bgcolor="#FFFACD" width="1%">Tot={{ result }}</td>
    {% endifchanged %}

</tr>
    <td bgcolor="#FFFACD" width="1%">{{ forloop.counter }} </td>

    <td bgcolor="#CCFACD" width="1%">{{ eachSc.sName }}</td>

    <td bgcolor="#CCF0F5" width="1%">{{ eachSc.duration }}</td>

    <td bgcolor="#CCFACD" width="1%">{{ eachSc.frames }}</td>

    <td bgcolor="#CCFACD" width="5%">{{ GetEmpDept }} - {{ getEmpName.emp_name }} - {{ eachSc.laEmpNum }}</td>
{% endfor %}

最佳答案

我相信这里有几个问题要处理。首先,我看到您要打印一个“结果”变量的项目,具体取决于forloop计数器的位置。在django模板中这是不可能直接实现的(出于各种合理的原因)。为了快速解决此问题而无需在视图中重新组织数据,可以定义一个自定义过滤器,该过滤器仅返回指定索引上的列表项。您可以将其放在templatetags / myfilters.py中:

from django import template
register = template.Library()

@register.filter
def getitem(mylist, index):
    return mylist[index]


然后,要在'laEmpNum'更改时重置forloop计数器,您应该使用'regroup'django模板标签,如下所示:

{% load myfilters %}
{% regroup DBShots1 by laEmpNum as eachScList %}
{% for eachScGrp in eachScList %}
    {% for eachSc in eachScGrp.list %}
    <tr>
      <td bgcolor="#FFFACD" width="1%">{{ forloop.counter }} </td>
      <td bgcolor="#CCFACD" width="1%">{{ eachSc.sName }}</td>
      <td bgcolor="#CCF0F5" width="1%">{{ eachSc.duration }}</td>
      <td bgcolor="#CCFACD" width="1%">{{ eachSc.frames }}</td>
      <td bgcolor="#CCFACD" width="5%">{{ GetEmpDept }} - {{ getEmpName.emp_name }} - {{ eachSc.laEmpNum }}</td>
     </tr>
    {% endfor %}
    <tr>
        <td> </td><td> </td>
        <td bgcolor="#FFFACD" width="1%">Tot={{ result|getitem:forloop.counter0 }}</td>
    </tr>
{% endfor %}


第一行加载我们的自定义过滤器库。最后一部分使用自定义过滤器,基于基于“ laEmpNum”分组程序的迭代来检索结果项。

关于python - Python-Django:ifchanged模板标记,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13430520/

10-12 21:11