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