有没有一种方法可以将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中(我假设它比我的函数更加优化)。
虽然我对它在这个应用程序中很感兴趣,但我也对它理论上的应用很感兴趣。