Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用ifchange_Python_Django - Fatal编程技术网

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%}