如何在Django列表中添加序列号?

时间:2018-08-02 19:00:34

标签: django

我正在Django列表视图中使用for循环填充表。

在填充时,我也要在列表中显示序列号。

{% for Attendee in filter.qs %} 
  {% if Attendee.checkin %}
    <tr>
      <td> Serial no. </td>
      <td>{{ Attendee.roll_no }}</td>
      <td>{{ Attendee.name }}</td>
      <td>{{ Attendee.branch }}</td>
    </tr>
    {% endif %}

由于我正在使用过滤器显示结果,因此无法在模型中维护序列号。

我想要这样的东西:

img

我可以使用哪些其他方式将序列号放入列表中?

编辑:

在列表中使用{{forloop.counter}}后,序列不是连续的。 例如:

enter image description here

3 个答案:

答案 0 :(得分:2)

您要使用的是{{forloop.counter}}。问题在于计数器对循环的所有迭代进行计数,而不仅仅是您执行操作的迭代。

解决方案是在将列表传递到模板之前对其进行过滤。例如:

context={"checked_in_attendees":  [i for i in filter.qs if i.checkin], ...}

然后,在模板上的checked_in_attendees上循环,{{forloop.counter}}将执行您想要的操作。

答案 1 :(得分:0)

您可以通过forloop.counter(1索引)或forloop.counter0(0索引)访问循环的当前迭代。对于您的情况:

{% for Attendee in filter.qs %} 
    {% if Attendee.checkin %}
    <tr>
        <td>{{ forloop.counter }}</td>
        <td>{{ Attendee.roll_no }}</td>
        <td>{{ Attendee.name }}</td>
        <td>{{ Attendee.branch }}</td>
    </tr>
{% endif %}

答案 2 :(得分:0)

Django模板在获取实体索引方面具有自己的语法。在这里,我认为您只需要{{forloop.counter}}作为您的序列号即可。