访问嵌套foreignkey对象的正确方法?

2024-04-25 19:56:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有层次关系的模型:

class School(models.Model):
    name = models.CharField()

class Class(models.Model):
    school = models.ForeignKey(School)

class Student(models.Model):
    class = models.ForeignKey(Class)

我想检索与某些School相关的每个Student对象。
我通常是这样做的:

the_school = School.objects.get(name='Springfield Elementary School')
students = Student.objects.filter(class__school=the_school)

但是这个方法需要两个模型来查找(SchoolStudent),这似乎有些不必要。。。对我来说。
因此,我尝试使用Django内置的相关管理器进行单行查询:

students = School.objects.get(name='...').class_set.student_set.all()
# or 
students = School.objects.get(name='...').class_set.all().student_set.all()

…但没用。你知道吗

如何从给定的School对象进行向下引用的查询?
还是有更好的解决办法?你知道吗


Tags: name模型getmodelobjectsmodelsallstudent