2015-06-05 57 views
0

說我有以下models.py:Django的查詢對相關對象的屬性設置

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?

回答

2

你可以這樣做:

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

這樣就可以排除誰擁有至少一個非缺席的學生,或有沒有學生在所有的所有教師。

+0

不,這將排除所有至少有一名非缺席學生的老師**和**根本沒有學生。 – Leistungsabfall

+0

啊,我不認爲要從相反的方式來處理它。謝謝。 (Q(students__absent = False)| Q(students = None)) 但是我很感謝你給我展示了正確的方法。 –

+0

@Leistungsabfall你是對的,我的壞。 – knbk

相關問題