使用Q对象,而不要先放置过滤器

时间:2019-07-09 16:16:37

标签: python django django-orm

我实现了两个查询,我相信它们会做同样的事情。但是他们没有!我的问题是为什么他们不这样做?

def query_5a(n, c):
    q = Driver.objects.filter(
        models.Q(car__car_type='A') | models.Q(car__color=c)
    ).filter(
        car__ride__gt=n
    ).distinct()
    return q


def query_5b(n, c):
    q = Driver.objects.filter(
        models.Q(car__ride__gt=n) &
        (
            models.Q(car__car_type='A') | models.Q(car__color=c)
        )
    ).distinct()
    return q

我希望query_5a的输出等于query_5b,但不是。

0 个答案:

没有答案