如何使用Q对象测试列表成员资格?

时间:2013-06-05 07:36:17

标签: python django django-q

使用普通的Django查询集,如果我想检索其“a”属性为1,2或3的所有myObject,我会执行以下操作:

myObjects.objects.filter(a_in=[1,2,3])

但我想使用Q对象来做这件事。如何用Q对象编写等效查询?

3 个答案:

答案 0 :(得分:2)

它可以立即使用。

Q(a__in=[1, 2, 3])

可能你的问题是你使用的是一个下划线而不是两个。

答案 1 :(得分:2)

它应该是这样的:

myObjects.objects.filter(Q(a = 1) | Q( a = 2) | Q( a = 3))

我不知道你为什么要这样做,但你也可以这样做

myObjects.objects.filter(Q(a__in=[1,2,3])

答案 2 :(得分:1)

q = Q(a__in=[1,2,3])
#q = Q(('a__in', [1,2,3]))
myObjects.objects.filter(q)

编辑:Bah没关系,不需要元组。