我正在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 %}
由于我正在使用过滤器显示结果,因此无法在模型中维护序列号。
我想要这样的东西:
我可以使用哪些其他方式将序列号放入列表中?
编辑:
在列表中使用{{forloop.counter}}后,序列不是连续的。 例如:
答案 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}}作为您的序列号即可。