Django在模板中分组字典

met*_*aon 4 python django django-templates django-views

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

def group_list():
    attendance = Student.objects.values('session', 'group', 'full_name',).order_by('session','group')
return attendance
Run Code Online (Sandbox Code Playgroud)

字典看起来像这样:

{'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"} 
Run Code Online (Sandbox Code Playgroud)

有没有办法为我的模板做一个循环或嵌套循环输出这样的东西?

Session 1 :
    Group A
          -User1
          -...
    Group B
          -User2
Session 2 :
    Group A
    Group B
          -User3
Run Code Online (Sandbox Code Playgroud)

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

fal*_*tru 6

你可以使用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 %}
Run Code Online (Sandbox Code Playgroud)