【发布时间】:2019-07-07 07:00:56
【问题描述】:
当我使用 and 或 &
时,我的查询会显示不同的结果criteria1 = Q(id__gte=802, id__lte=1000)
criteria2 = Q(country_id__contains='UK')
我一直在用:
q = Mymodel.objects.filter(criteria1 & criteria2)
但在这种特殊情况下,当我使用 & 时,它总是输出一行。 (我还检查了 print q.query(),查询结果很好)
但是,当我使用 and 而不是 & 时。查询给出正确的输出
q = Mymodel.objects.filter(criteria1 and criteria2)
幕后究竟发生了什么?
【问题讨论】:
-
and不是专门为Q对象实现的运算符。它将被普通的 Python 规则评估为criteria1 if not criteria1 else criteria2。
标签: python django django-orm