使用普通的 Django 查询集,如果我想检索“a”属性为 1、2 或 3 的所有 myObjects,我会执行以下操作:
myObjects.objects.filter(a_in=[1,2,3])
但我想使用 Q 对象来做到这一点。我将如何使用 Q 对象编写等效查询?
它应该如下所示:
myObjects.objects.filter(Q(a = 1) | Q( a = 2) | Q( a = 3))
我不知道你为什么要这样做,但你也可以这样做
myObjects.objects.filter(Q(a__in=[1,2,3])
它立即生效。
Q(a__in=[1, 2, 3])
可能您的问题是您使用的是单个下划线而不是两个下划线。
q = Q(a__in=[1,2,3])
#q = Q(('a__in', [1,2,3]))
myObjects.objects.filter(q)
编辑:呸没关系,不需要元组。