如何进行这样的复杂查找?

时间:2013-03-13 22:50:37

标签: python django lookup django-queryset

好吧,也许这并不复杂,但我对此感到困惑。我有这个模型架构:

Evento(models.Model):
    aprobado = models.BooleanField()
    mod = models.ForeignKey(model=Mod, null=True)
    [...]

Mod(models.Model):
    activo = models.BooleanField()
    [...]

我想使用aprobado == Truemod == None或(如果mod!=无)mod.activo == False 检索对象。

2 个答案:

答案 0 :(得分:2)

使用"Q" object和按位OR运算符(Q对象重载表示SQL OR)。

from django.db.models import Q

queryset = Evento.objects.filter(Q(mod__isnull=True, aprobado=True) | Q(mod__isnull=False, mod__activo=False))

答案 1 :(得分:1)

您可以详细并使用Q objects

Evento \
    .objects \
    .filter(
        Q(aprobado==True, mod__isnull=True) |
        Q(mod__isnull=False, mod__activo=False)