2014-09-26 60 views
0

我有以下視圖和我發現它不可能通過一個模板顯示:Django的:多維詞典顯示在模板

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)。因此,我想循環瀏覽學生名單,然後再與老師一起完成。我無法得到這個工作。無論我嘗試什麼。我知道我做錯了,但找不到完成它的正確方法。

+0

你可以試試這個代碼,我發現,http://stackoverflow.com/a/12860787/3027579 – Rafael 2014-09-29 17:24:54

+0

我已經試過了,但不能讓它開始工作。 – acer123 2014-09-30 14:42:02

回答

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>