У меня есть следующий вид, и я нахожу, что это невозможно отобразить с помощью шаблона:Джанго: многомерный словарь отображается в шаблоне
sm = request.session.get('active_semester')
semester_dates = SemesterDates.objects.filter(semester=sm)
schedule = Schedule.objects.filter(semester=sm)
student_enrolls = StudentEnroll.objects.filter(schedule__semester = sm).values_list('schedule__pk', 'student__family_member__first_name', 'student__family_member__last_name').order_by('student__family_member__last_name')
schedule_array={}
for a in schedule:
schedule_array[a.id]={'course':a.course_catalog.course_name, 'students': [], 'teachers': []}
for (pk, fname, lname) in student_enrolls:
schedule_array[pk]['students'].append(fname + ' ' + lame)
Это производит следующий вывод. Обратите внимание, что есть два класса «Arduino», потому что они проводятся в разное время. Итак, я использую Schedule.pk в качестве словарного ключа, чтобы держать их в отдельности. Таким образом, мой список классов отличается для каждого экземпляра этого курса.
{2L:
{
'students': [u'Jessica Ryan', u'Annie Ryan'],
'course': u'Arduino Programming',
'teachers': []
},
4L:
{
'students': [],
'course': u'Lego Animation 3rd-4th Grade',
'teachers': []
},
5L:
{
'students': [],
'course': u'Life skills - card games',
'teachers': []
},
6L:
{
'students': [],
'course': u'test',
'teachers': []
},
7L: {
'students': [u'Mark Ryan'],
'course': u'Arduino Programming',
'teachers': []
}
}
В моем шаблоне у меня есть следующее. Это не работает, но дает вам представление о том, что я пытаюсь сделать.
<table class="table table-hover">
{% for e in schedule %}
<tr class="info">
<td><h3>{{ e.course_catalog }}</h3></td>
</tr>
<tr>
<td>
{% for key in schedule_array.items|lookup:0 %}
<h5>Dict Key: {{ key }} & Value: {{ value }} {{e.pk}} </h5>
{% for k2 in key.items %}
k2: {{k2}} Students: {{k2.students}}<br>
{% for k3 in k2 %}
{% for s in k3 %}
k3:{{s.students}}
{% endfor %}
{% endfor %}
endfor 2
{% endfor %}
endfor 1
{% endfor %}
</td>
</tr>
{% endfor %}
</table>
То, что я пытаюсь сделать, - это цикл через мой объект расписания. Затем я хотел бы найти первичный ключ (e.pk) в словаре sched_array. Из этого я хотел бы пройти через список учеников, а затем сделать это снова с учителями. Я не могу заставить это работать. Независимо от того, что я пытаюсь. Я знаю, что делаю это неправильно, но не могу найти правильный способ его достижения.
Вы можете попробовать этот код я нашел, http://stackoverflow.com/a/12860787/3027579 – Rafael
я пробовал, но не мог заставить его работать. – acer123