Используйте объект Q вместо того, чтобы ставить фильтр за другим - PullRequest
0 голосов
/ 09 июля 2019

Я реализовал два запроса, и я считаю, что они делают то же самое.Но они этого не делают!Моя проблема в том, почему они не делают то же самое?

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, но это не так.

...