django,在应用多个查询过滤器时,顺序是否重要?

时间:2012-12-05 10:32:51

标签: django filter

在{django中查询时,order的{​​{1}}是否重要?

MyModel.objects.filter(EXP1).filter(EXP2)

VS

MyModel.objects.filter(EXP2).filter(EXP1)

它们一样吗?

2 个答案:

答案 0 :(得分:0)

filter(exp1).filter(exp2)根据exp1过滤,然后子过滤exp2(进一步限制结果查询集,结果也是exp2中的结果)

所以实际上你的答案是肯定的,它们是相同的,因为这就像一个普通的AND查询

答案 1 :(得分:0)

如果你只是做了两个简单的filter操作,那么你是正确的,订单无关紧要,但要小心。有一些示例说明查询集方法的顺序何时起作用:

不是认为filter基本上是可交换的,你可能更安全地认为每个查询集方法通常在它们之前的任何内容上迭代。多个过滤器并不总是简单的SQL AND。以this为例(尽管在这种情况下它仍然是可交换的)。