这部分来自views.py
results=[(A,[stuObj1,stuObj2,stuObj3]),(B,[stuObj4,stuObj5,stuObj6]),(C,[stuObj7,stuObj8])]
for tup in results:
total = tot+len(tup[1])
render_to_response(url,{'results':res , 'total':str(tot),})
这是模板代码:
<th class="name">Name</th>
<th class="id">Student ID</th>
<th class="grade">Grade</th>
{% for tup in results %}
{% for student in tup|last %}
{% with forloop.parentloop.counter as parentloopid%}
{% with forloop.counter as childloopid%}
<tbody class="results-body">
<tr>
<td>{{student.fname|lower|capfirst}} {{student.lname|lower|capfirst}}</td>
<td>{{student.id}}</td>
<td>{{tup|first}}</td>
</tr>
{% endfor %}
{% endfor %}
现在我遇到的问题是1.为行编号。
在这里我的问题是我不确定我是否可以在模板中执行total=total-1
之类的操作来获取
编号为<td>{{total}}</td>
的行
2.将css应用于tr:永远或奇怪。
在这种情况下发生的是每次循环运行奇数/偶数排序丢失。
这些似乎是相关问题。任何想法都会很棒:)。
答案 0 :(得分:0)
为了对行进行编号,您可以使用forloop.counter 在这里,您可以看到example如何使用它。
要在偶数和奇数之间切换,您可以使用cycle template tag
{% for project in object_list %}
<tr class="{% cycle odd,even %}"> ... </tr>
{% endfor %}
答案 1 :(得分:0)
回答我的问题:1。编号会花一点时间。一个选项是设计自定义过滤器或其他方式是修改视图并使用简单的forloop.counter来添加,计数和forloop.counter。让我举一个例子:对于上述情况,结果是按成绩和学生排序的词典,类似这样((A:a,b,c,d,e),(B:f,g,h,i), (C:j,k,l,m,n))。在视图中,为每个元组添加一个字典,其中包含前一元组的学生数。
temp_count = 0
for tup in results:
tup[1].append({'count':temp_count})
temp_count = temp_count + len(tup[1])-1
-1是因为我们不想避免字典计数
在模板内
{% with tup|last|last as cnt %}
{% with forloop.counter as rnum %}
{% with rnum|add:cnt.count as rownum %}
<td>{{rownum}}</td>
其余代码在这里{% endwith %}{%endwith%}{% endwith %}
2.使用{% cycle %}
时使用嵌套循环时没有用,<tr class="{% if rownum|divisibleby :2 %}"even"{% else %}"odd"{% endif %}">
请遵循此clean way to color。