擅长:python、mysql、java
<p>您可以在一个循环中构建<code>Q</code>对象,丢弃所有不存在的值。请注意,经过考虑,您的<code>except</code>似乎永远无法到达,因为如果Get参数不存在,<code>get</code>将只返回<code>None</code>。因此,您可以将<code>try</code>替换为<code>if</code>。在</p>
<p>下面的代码假设您只想在过滤器中忽略未设置的值。在</p>
<p>(这是未经测试的,如果您有任何问题,请告诉我。)</p>
<pre><code>attributes = (('title', 'title__contains'),
('description', 'description__contains'),
('funAria', 'functional_area__contains'),
('femaleReq', 'female_candidate'))
query_filter = Q() # initialize
for get_param, kw_arg in attributes:
get_value = request.GET.get(get_param)
if get_value:
query_filter |= Q(**{ kw_arg: get_value })
result = Product.objects.filter(query_filter)
</code></pre>