Django:模板中显示的多维字典

时间:2014-09-26 17:25:54

标签: django django-templates

我有以下观点,我发现无法通过模板显示:

    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>

我要做的是循环我的日程对象。然后,我想在schedule_array字典中查找主键(e.pk)。从那以后,我想循环浏览学生名单,然后再与老师一起做。我无法让它发挥作用。无论我尝试什么。我知道我做错了但找不到正确的方法来完成它。

1 个答案:

答案 0 :(得分:2)

想出来:

<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>