У меня есть:
class Teacher(models.Model):
name = models.CharField(...)
...
class Student(models.Model):
age = models.IntegerField(...)
teacher = models.ForeignKey(Teacher, ...)
...
У меня есть набор учителей:
teachers = Teacher.objects.filter(name="Betty")
Я хочу найти всех учеников, связанных с каждым учителем, в этом наборе запросов, и мне нужнорезультат должен быть сгруппирован по учителю.Что-то вроде:
{
<Teacher: 1>: [<Student: 1>, <Student: 2>],
<Teacher: 2>: [<Student: 3>, <Student: 4>]
}
Я мог бы сделать это, просто зацикливаясь на каждом объекте в наборе запросов teachers
и отфильтровывая учеников по ученикам, которые ForeignKey обращаются к этому учителю, но это кажется очень медленным и потребовало бы дополнительной БДвызов для каждого объекта.Есть ли способ сделать это всего за один или несколько вызовов БД, в идеале, оставаясь только на Python и не прибегая к SQL?