对于Django中的Q object,我希望能够解析AND
,OR
个查询。以下是要解析的查询示例:
from django.db.models import Q
Poll.objects.filter(
Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6))
)
此查询完全相同:
a = Q(pub_date=date(2005, 5, 2))
b = Q(pub_date=date(2005, 5, 6))
Poll.objects.filter(
a | b
)
是否可以解析如下所示的查询?它显然会失败,因为join
返回与字符|
连接的字符串。但这就是所需的Django ORM语法,我们希望能够动态地解析这些查询而无需对Q
参数进行硬编码。
a = Q(pub_date=date(2005, 5, 2))
b = Q(pub_date=date(2005, 5, 6))
Poll.objects.filter(
" | ".join([a,b])
)
答案 0 :(得分:3)
您应该能够通过重复或运算符来编写代码:
q = Q()
for some_date in collection_of_dates:
q |= Q(pub_date=some_date)
Poll.objects.filter(q)