就我而言,我有一些来自表单的列名.我想过滤以确保它们都是真的.这是我目前的做法:
for op in self.cleaned_data['options']: cars = cars.filter((op, True))
现在它可以工作,但是有可能有大约40列要测试,因此保持查询效率不高.
有没有办法可以将它压缩成一个过滤查询?
将查询构建为字典,并使用**运算符将选项解压缩为filter方法的关键字参数.
op_kwargs = {} for op in self.cleaned_data['options']: op_kwargs[op] = True cars = CarModel.objects.filter(**op_kwargs)
这在django文档中有所介绍,并且也在SO上有所涉及.