我有一个像这样的 Q 对象。
params = Q(salt_spray__iregex=keyword) | Q(special_function__iregex=keyword) | Q(comment__iregex=keyword)
在这里,当我在此基础上过滤我的模型时,一切正常。
Model.objects.filter(params)
但我想做以下事情。
params = Q(salt_spray__iregex=keyword) | Q(special_function__iregex=keyword) | Q(comment__iregex=keyword)
if data.get('market'):
params[project__market] = data['market'] # not sure about this step.
Model.objects.filter(params)
解决方案后的代码
数据 = self.cleaned_data
keyword = data['keyword']
params = Q()
if keyword:
params |= Q(salt_spray__iregex=keyword) | Q(special_function__iregex=keyword) | Q(comment__iregex=keyword) # Note OR Operator.
if data['market']:
params &= Q(project__market=data['market']) # Note here AND Operator
innovations = Innovation.objects.filter(params)
return innovations