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