Django QuerySet:按另一个字段的值过滤

Django QuerySet: filter by the value of another field

我有一个模型,我希望按其属性 a 进行过滤。该模型还有另一个属性b。我正在尝试过滤 a 为 0 或 a 具有 b 属性值的条目(对于每一行,显然)。如何按另一列的值进行过滤?

这是我尝试过的,以及缺失的部分:

MyModel.objects.filter(Q(a=0) | Q(a=???)) # ??? is to be the value of the `b` column

我正在使用 Django 1.4,我知道它是一个不再受支持的旧版本,但不幸的是,我无法执行升级。

您可以使用 F 模型来比较两个字段。

from django.db.models import F
MyModel.objects.filter(a__exact = F('b'))

所以对于你的联合查询,你可以使用类似的东西,

MyModel.objects.filter(Q(a=0) | Q(a__exact=F('b')))

我认为您可以将 F expression 与您的 Q 对象一起使用:

MyModel.objects.filter(Q(a=0) | Q(a=F('b')))

我还建议您现在安排升级,否则,您将错过其他功能和安全修复程序。