Django查询相关对象集的属性

时间:2015-06-05 17:37:25

标签: python django

说我有以下models.py:

from django.db import models

class Teacher(models.Model):

    name = models.CharField()


class Student(models.Model):

    name = models.CharField()

    absent = models.BooleanField(default=False)

    teacher = models.ForeignKey('Teacher',related_name='students') 

如果我想查找至少一名缺席学生的教师名单,我可以执行以下操作:

Teacher.objects.filter(students__absent=True)

我的问题是,我如何提出一份教师名单,其中所有的学生缺席,排除了根本没有学生的教师?甚至可以通过ORM实现这一点而不必放入SQL?

1 个答案:

答案 0 :(得分:2)

你可以这样做:

Teacher.objects.exclude(Q(students__absent=False) | Q(students=None))

这将排除所有至少有一名非缺席学生或根本没有学生的教师。