我的模型具有层次关系:
class School(models.Model):
name = models.CharField()
class Class(models.Model):
school = models.ForeignKey(School)
class Student(models.Model):
class = models.ForeignKey(Class)
我想检索与某些Student
相关的每个School
个对象。
我通常会这样做:
the_school = School.objects.get(name='Springfield Elementary School')
students = Student.objects.filter(class__school=the_school)
但是这个方法需要两个模型来查找(School
和Student
),这似乎有点不必要......对我而言。
所以我尝试使用Django内置的相关管理器进行单行查询:
students = School.objects.get(name='...').class_set.student_set.all()
# or
students = School.objects.get(name='...').class_set.all().student_set.all()
......哪些不起作用。
如何从给定的School
对象中查询引用查询?
或者有更好的解决方案吗?
答案 0 :(得分:1)
您可以使用class__school__name
作为过滤器参数:
students = Student.objects.filter(class__school__name='Springfield Elementary School''Springfield Elementary School')