Django在模板中分组字典

时间:2014-08-18 17:12:26

标签: python django django-templates django-views

我有这个视图,它是每个会话的组列表:

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

也许我的观点错了,我应该生成一个已按会话和群组分组的略有不同的词典?

1 个答案:

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