【问题标题】:django, order matters when applying multiple query filters?django,应用多个查询过滤器时的顺序很重要吗?
【发布时间】:2012-11-23 03:46:56
【问题描述】:

当您在 django 中查询时,orderfilter 重要吗?

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

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

它们是一样的吗?

【问题讨论】:

    标签: django filter


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-02
        • 2018-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多