是否有一種方法可以獲取django查詢表達式的列表(例如Q(first_name="Jordan")
,其中Q
是django.db.models.Q
)並將它們按位或運算在一起?Python列表按位操作
換句話說,我有這樣的事情:
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集操作符來結合結果? (http://docs.python.org/library/sets.html#set-objects) – 2012-01-17 23:44:46
@RichardGreen可以創建相當醜陋的查詢 – 2012-01-18 01:07:24