python将参数传递给由字符分隔的函数

时间:2015-12-08 20:20:51

标签: python django django-q

对于Django中的Q object,我希望能够解析ANDOR个查询。以下是要解析的查询示例:

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])
)

1 个答案:

答案 0 :(得分:3)

您应该能够通过重复或运算符来编写代码:

q = Q()
for some_date in collection_of_dates:
    q |= Q(pub_date=some_date)
Poll.objects.filter(q)