2014-09-26 3 views
0

У меня есть следующий вид, и я нахожу, что это невозможно отобразить с помощью шаблона:Джанго: многомерный словарь отображается в шаблоне

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. Из этого я хотел бы пройти через список учеников, а затем сделать это снова с учителями. Я не могу заставить это работать. Независимо от того, что я пытаюсь. Я знаю, что делаю это неправильно, но не могу найти правильный способ его достижения.

+0

Вы можете попробовать этот код я нашел, http://stackoverflow.com/a/12860787/3027579 – Rafael

+0

я пробовал, но не мог заставить его работать. – acer123

ответ

1

Фигурные его проведения:

<table class="table table-hover"> 
    {% for key, value in schedule_array.items %} 
    <tr class="info"> 
     <td><h3>{{ value.course }}</h3></td> 
    </tr> 
    <tr> 
     <td> 
     {% for s in value.students %} 
      k2: {{s}} 
      {% endfor %} 
     </td> 
     <td> 
     {% for t in value.teachers %} 
      k2: {{t}} 
      {% endfor %} 
     </td> 
    </tr> 
{% endfor %} 
</table> 
Смежные вопросы