Django-grouping vocabulary in template
I have this view, which is a list of groups for each session:
def group_list():
attendance = Student.objects.values('session', 'group', 'full_name',).order_by('session','group')
return attendance
The dictionary looks like this:
{'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"}
Is there a way to make a loop or nested loop for my template to output something like this?
Session 1 :
Group A
-User1
-...
Group B
-User2
Session 2 :
Group A
Group B
-User3
Perhaps I made my opinion wrong and I need to create a slightly different dictionary already grouped by session and groups?
+3
source to share
1 answer
You can use a tag regroup
.
For example, if you pass template attendance
to template:
{% 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 %}
+4
source to share