在我的情况下,我有一些来自表单的列名。我想要过滤以确保它们都是真实的。这是我目前的方法:
for op in self.cleaned_data[ options ]:
cars = cars.filter((op, True))
现在它可以运行,但可能要测试约40列,因此保持查询并不是非常有效的。
我能把这个压缩成一个过滤查询吗?
在我的情况下,我有一些来自表单的列名。我想要过滤以确保它们都是真实的。这是我目前的方法:
for op in self.cleaned_data[ options ]:
cars = cars.filter((op, True))
现在它可以运行,但可能要测试约40列,因此保持查询并不是非常有效的。
我能把这个压缩成一个过滤查询吗?
Django的查询集是延迟加载的,所以你现在所做的实际上是非常高效的。数据库直到你尝试访问QuerySet中的一个字段才会被访问......假设你没有编辑出一些代码,而且它实际上就像这样:
cars = CarModel.objects.all()
for op in self.cleaned_data[ options ]:
cars = cars.filter((op, True))
更多信息点击此处。