Как сгруппировать ManyToMany в шаблон - PullRequest
0 голосов
/ 22 ноября 2011

Вот моя модель:

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.Как я могу объединить всех учителей для определенного предмета?

1 Ответ

3 голосов
/ 22 ноября 2011

Я думаю, что вы не можете получить эту функциональность из шаблона.Однако вы можете сделать это в своем представлении:

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 и передать полученный список (списков) в шаблон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...