0

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

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

但我想使用 Q 对象来做到这一点。我将如何使用 Q 对象编写等效查询?

4

3 回答 3

2

它应该如下所示:

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

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

myObjects.objects.filter(Q(a__in=[1,2,3])
于 2013-06-05T07:47:10.423 回答
2

它立即生效。

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

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

于 2013-06-05T07:45:02.003 回答
1
q = Q(a__in=[1,2,3])
#q = Q(('a__in', [1,2,3]))
myObjects.objects.filter(q)

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

于 2013-06-05T07:43:52.937 回答