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

时间:2017-04-19 09:38:23

标签: python django django-1.4

我有一个模型,我希望按其属性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,我知道它是一个不再受支持的旧版本,但不幸的是,执行升级不适合我。

2 个答案:

答案 0 :(得分:5)

我认为您可以在Q对象中使用F expression

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

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

答案 1 :(得分:1)

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

=CONCAT("(",B1,")");

因此,对于您的联合查询,您可以使用类似

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