1

好的,也许它并不复杂,但我坚持这一点。我有这个模型架构:

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

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

我想用and or (if mod != None)检索对象aprobado == Truemod == Nonemod.activo == False

4

2 回答 2

2

使用“Q”对象和按位 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))
于 2013-03-13T22:55:18.447 回答
1

您可以冗长并使用Q对象

Evento \
    .objects \
    .filter(
        Q(aprobado==True, mod__isnull=True) |
        Q(mod__isnull=False, mod__activo=False)
于 2013-03-13T22:57:04.150 回答