AND
我是 Django 初学者,我想出了如何动态创建模型查询,但是当我尝试混合和运算符时,我被困在某个时刻OR
:
我有一个字段列表(联系人姓名、公司、职位、国家/地区),这些字段可能包含多个关键字(用逗号分隔)
因此,如果我搜索这些公司名称“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)
太感谢了!