1
我一個Django初學者,我想出如何動態地創建一個模型查詢,但我被困在某些時候,當我特林混合AND
和OR
運營商:如何在Django查詢中混合使用AND和OR運算符?
我的字段列表(CONTACT_NAME,公司,職位,國家),這些字段可能包含多個關鍵字(以逗號分隔,'')
因此,如果我搜索這些公司名稱「imtech,ABC,FooBar」,我會得到正確的結果我有下面,因爲它總是使用|
(OR)運算符。
但是,如果我想限制搜索公司字段的條目爲「imtech,ABC,FooBar」,並且只將位置字段設置爲「客戶經理」,該怎麼辦?
我知道我必須將&
運算符放在每個字段循環的末尾,但我還沒有成功完成,所以這裏是我的代碼,請幫助我!
search_fields = {'contact_name', 'company', 'position', 'country'}
search_fields_values = {}
qs_params = None
for field in search_fields:
search_fields_values[field] = self.request.GET.get(field, None)
if search_fields_values[field]:
search_fields_values[field] = search_fields_values[field].split(',')
for part in search_fields_values[field]:
q = Q(**{field: part})
qs_params = qs_params | q if qs_params else q
qs = qs.filter(qs_params)
非常感謝!
你是我的男人alecxe!非常感謝,這正是我所期待的。 – Oms 2013-05-06 21:15:13