0
我有一个django应用程序,我在一个循环中迭代地执行过滤器。 下面是一个简单的例子:django - 改进迭代查询
class Decision(models.Model):
recommendation = models.TextField()
class Condition(models.Model):
dec = models.ForeignKey(Decision, related_name='condition')
temperature = models.PositiveInteger()
pressure = models.PositiveInteger()
Decision.objects.filter(condition__temperature=22, condition__pressure=123).filter(condition__temperature=30, condition__pressure=144).values_list('id',flat=True)
正如你所看到的,条件与。 有没有更有效的方法来做这个查询?
这里是另一种方法,但它不给我任何结果:
Decision.objects.filter(Q(condition__temperature=22, condition__pressure=123) &\
Q(condition__temperature=30, condition__pressure=144)).values_list('id',flat=True)
我有点意外的是,第一个查询显然是给你的结果;我认为过滤器链,正如你所述,AND-ed,因此第一个过滤器排除第二个过滤器(因为'condition__temperature = 22'不包括'condition_temperature = 30')。这就是你确实(正确的,我认为)采取你的另一种方法。这个问题可能是:你想达到什么,结合两个独占条件? – Evert
参见http://stackoverflow.com/questions/8164675/chaining-multiple-filter-in-django-is-this-a-bug。过滤器链确实是OR-ed在一起,因此为了在第二种方法中获得相同的行为,请用&替换&。如果这确实是你想要的。 – Evert