5

当您在 django 中查询时,这order有关系吗?filter

MyModel.objects.filter(exp1).filter(exp2)

对比

MyModel.objects.filter(exp2).filter(exp1)

他们是一样的吗?

4

2 回答 2

3

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

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

于 2012-12-05T10:51:30.987 回答
0

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

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

于 2012-12-05T10:40:05.070 回答