Python 使用ifchange
可能重复:Python 使用ifchange,python,django,Python,Django,可能重复: 这是我现在的代码: {% for eachSc in DBShots1 %} <tr> {% ifchanged eachSc.laEmpNum %} <td> </td><td> </td> <td bgcolor="#FFFACD" width="1%">Tot={{ result }}</td&
这是我现在的代码:
{% for eachSc in DBShots1 %}
<tr>
{% ifchanged eachSc.laEmpNum %}
<td> </td><td> </td>
<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 }} - {{ eachSc.laEmpNum }}</td>
{% endfor %}
1----01----2.5----60----所有布局-1046
Tot=[(u'1046', 5.5), (u'8008', 4.5), (u'8011', 1.3)]
Tot=(1046,5.5)
2----02----2.0----48----allLayout-1046
Tot=[(u'1046', 5.5), (u'8008', 4.5), (u'8011', 1.3)]
Tot=(1046,5.5)
3----04----1.0----0----allLayout-1046
Tot=[(u'1046', 5.5), (u'8008', 4.5), (u'8011', 1.3)]
Tot=(1046,5.5)
4----03----2.3----50----所有布局-8008
Tot=[(u'1046', 5.5), (u'8008', 4.5), (u'8011', 1.3)]
Tot=(8008', 4.5)
5----06----2.2----0----allLayout-8008
Tot=[(u'1046', 5.5), (u'8008', 4.5), (u'8011', 1.3)]
Tot=(8008', 4.5)
6----05----1.3----0----allLayout-8011
Tot=(8011', 1.3)
但我的输出应该如下所示:
如果empID发生变化(104680088011),则
{{forloop.counter}}应以一(1)开头,{{result}应显示第一个ID(1046)的第一个元素((1046,5.5)
第二个ID(8008)的第二个(8008',4.5)元素,依此类推:
1----01----2.5----60----所有布局-1046
Tot=[(u'1046', 5.5), (u'8008', 4.5), (u'8011', 1.3)]
Tot=(1046,5.5)
2----02----2.0----48----allLayout-1046
Tot=[(u'1046', 5.5), (u'8008', 4.5), (u'8011', 1.3)]
Tot=(1046,5.5)
3----04----1.0----0----allLayout-1046
Tot=[(u'1046', 5.5), (u'8008', 4.5), (u'8011', 1.3)]
Tot=(1046,5.5)
1----03----2.3----50----allLayout-8008
Tot=[(u'1046', 5.5), (u'8008', 4.5), (u'8011', 1.3)]
Tot=(8008', 4.5)
2----06----2.2----0----allLayout-8008
Tot=[(u'1046', 5.5), (u'8008', 4.5), (u'8011', 1.3)]
Tot=(8008', 4.5)
1----05----1.3----0----allLayout-8011
Tot=(8011', 1.3)
你不需要在这里使用ifchanged 您应该使用
forloop.counter0
为结果编制索引,但使用django模板系统是不可能的
您可以编写自定义标记来执行此操作,也可以将结果添加到对象上下文中来更改视图。您有两个问题:
仅显示Tot特定empID而非全部来自字符串:
Ans:无法执行此操作,因为无法将变量用于属性名称、字典键或列表索引,这会使您无法从计数器中仅显示数组中的特定索引。您可能需要将此值放入列表DBShots1,然后才能在模板上显示或创建自定义模板标记
每次更改empID时重置计数器:
Ans:您可以使用regroup函数对列表进行排序,从而为每个empID生成另一个for循环
e、 g
{%eachSc.laEmpNum将DBShots1重新组合为emp_list%}
{emp_列表%中的每个HSC的百分比}
EmpNum:{{eachSc.grouper}}
{eachSc.list%中项目的%
{{forloop.counter}}
{{item.sName}
{{item.duration}}
{{item.frames}}
{{GetEmpDept}}-{{item.laEmpNum}}
{%endfor%}
{%endfor%}