【发布时间】:2012-11-23 03:46:56
【问题描述】:
当您在 django 中查询时,order 或 filter 重要吗?
MyModel.objects.filter(exp1).filter(exp2)
对
MyModel.objects.filter(exp2).filter(exp1)
它们是一样的吗?
【问题讨论】:
当您在 django 中查询时,order 或 filter 重要吗?
MyModel.objects.filter(exp1).filter(exp2)
对
MyModel.objects.filter(exp2).filter(exp1)
它们是一样的吗?
【问题讨论】:
如果您只是执行两个简单的filter 操作,那么您是正确的,顺序无关紧要,但要小心。有一些示例说明查询集方法的顺序何时很重要:
与其将filter 视为根本上可交换的,不如将每个查询集方法视为通常对它们之前的任何内容进行迭代可能更安全。多个过滤器并不总是简单的 SQL AND。以this 为例(尽管在这种情况下它仍然是可交换的)。
【讨论】:
filter(exp1).filter(exp2) 根据 exp1 过滤,然后子过滤 exp2(进一步限制结果查询集,结果也是 exp2 中的结果)
所以实际上你的答案是肯定的,它们是一样的,因为这就像一个普通的 AND 查询
【讨论】: