2011-11-22 70 views
0

这里是我的模型如何:我到多对多组模板

class Teacher(models.Model): 
    name = models.CharField(max_length=50) 
    subjects = models.ManyToManyField(Subject) 

class Subject(models.Model): 
    name = models.CharField(max_length=50) 
    type = models.ForeignKey(SubjectType) 

class SubjectType(models.Model): 
    name = models.CharField(max_length=50) 

想要做这样的事情,在模板:

{regroup subjects by subject.type} 
    {foreach subject_type} 
    #display all teachers for subject_type   

每个主题都有其teacher_set。 如何将所有教师联合为一个特定的subject_type?

回答

3

我认为你不能从模板中获得这个功能。但是,你能做到这一点在你看来:

subject_type = # Some SubjectType object 
my_teachers = [] 
for subject in subject_type.subject_set: 
    my_teachers += subject.teacher_set 
# What we do with the duplicates? 
my_teachers = list(set(my_teachers)) 

现在,你有独特的教师在my_teachers特定SubjectType的列表。

编辑:您可以为每个SubjectType对象执行此操作,并将生成的列表(列表)传递给模板。

+2

非常感谢。现在我明白,在开始乱用Django之前,我应该学习python。 :) –

+1

@VladimirNani,我不会说_before_,我会说_simultaneously_ – juliomalegria