强哥1.10.1
from django.db.models import Q
q = Q(title__icontains='r')
print(q)
>>> (AND: ('title__icontains', 'r'))
我只是想是否有可能创建相同的,但与或逻辑运算.
我可以获得OR如下:
for item in q_objects:
query |= item
或者以其他方式(使用lamba)。
但是我感觉不到这个Q物体,这个问题可以帮助我更好地理解它。
换句话说,是否可以通过构造函数创建一个对象,该对象将显示(或:('标题__图标','r'))?
3条答案
按热度按时间41zrol4v1#
我最近发现了这一点,我的解决方案是:
mwg9r5ms2#
黑客:
不要这样做,因为您已经为任何将来(和现有!)的用户改变了Q类。
更礼貌:
但是现在你有了
Q
子类的一个示例,这不应该是一个问题,但是对于这些简单的对象来说,这实际上是不必要的,下面是一个更高级的方法:kfgdxczn3#
@wim的回答太赞了!只是一点补充:
为Q创建一个新对象似乎失败了,但是您可以使用
Q.default = Q.OR
修改默认连接器。此外,还可以通过执行以下操作一次传递所有查询参数: