【发布时间】:2012-02-12 18:12:41
【问题描述】:
有没有办法获取 django 查询表达式列表(例如Q(first_name="Jordan"),其中Q 是django.db.models.Q)并将它们按位或在一起?
换句话说,我有这样的东西:
search_string = "various search terms"
我想这样做:
search_params = [Q(description__icontains=term) for term in re.split(r'\W', search_string)]
search_params = something_magical(search_params)
results = Record.objects.filter(search_params)
现在search_params 等同于Q(description__icontains="various") | Q(description__icontains="search" | Q(description__icontains="terms"
我知道这样的功能是可能的:
def something_magical(lst):
result = lst[0]
for l in lst[1:]
result |= l
return result
所以我想知道这个功能是否已经内置在 Python 中(我假设它比我这里的函数更优化)。
虽然我对这个应用程序感兴趣,但我也只是理论上对它感兴趣。
【问题讨论】:
-
我认为没有这样的 django 运算符...但是您可以只执行所有“或”查询,然后使用 python 集合运算符来组合结果吗? (docs.python.org/library/sets.html#set-objects)
-
@RichardGreen 可以创建非常丑陋的查询
标签: python django bitwise-operators