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

python pass arguments to function separated by character

对于 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 returns 与字符 | 连接的字符串。但这就是所需的 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])
)

您应该能够通过重复 or 运算符以编程方式编写:

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