我有这个视图,它是每个会话的组列表:
def group_list():
attendance = Student.objects.values('session', 'group', 'full_name',).order_by('session','group')
return attendance
字典看起来像这样:
{'full_name': u'User1', 'session': 1, 'group': u'A'}
{'full_name': u'User2', 'session': 1, 'group': u"B"}
{'full_name': u'User3', 'session': 2, 'group': u"B"}
{'full_name': u'User4', 'session': 99, 'group': u'A'}
{'full_name': u'User5', 'session': 99, 'group': u"C"}
有没有办法为我的模板制作一个循环或嵌套循环来输出这样的东西?
Session 1 :
Group A
-User1
-...
Group B
-User2
Session 2 :
Group A
Group B
-User3
也许我的观点错了,我应该生成一个已按会话和群组分组的略有不同的词典?
答案 0 :(得分:5)
您可以使用regroup
代码。
例如,假设您将attendance
传递给模板:
{% regroup attendance by session as session_list %}
{% for session in session_list %}
Session: {{ session.grouper }}
{% regroup session.list by group as group_list %}
{% for group in group_list %}
Group: {{ group.grouper }}
{% for student in group.list %}
- {{ student.full_name }}
{% endfor %}
{% endfor %}
{% endfor %}