Я хочу выполнить следующий запрос в Django, чтобы найти объекты автомобилей, производитель которых отсутствует в таблице производителей и имеет определенный код страны:
ids = Countries.objects.all().values_list('id', flat=True)
Cars.objects.filter(group__manufacturer__country=123).exclude(group__manufacturer__id__in=ids)
К сожалению, это дает мне пустой результат запроса. Но выполнение только фильтра и запроса на исключение дает непустые результаты, когда некоторые объекты совпадают (то есть полностью выполняют оба условия). Поэтому мне интересно, как объединить запросы, чтобы получить правильное подмножество. Я также пытался использовать объекты Djangos Q, но, к сожалению, с теми же результатами. Если возможно, я бы хотел избежать использования raw sql.
Edit:
SQL-запрос выглядит как
SELECT * FROM "car"
INNER JOIN "group" ON ("cars"."group_id" = "group"."id")
INNER JOIN "manufacturertogroup" ON ("group"."id" = "manufacturertogroup"."group_id")
WHERE (NOT ("cars"."group_id"
IN (SELECT V2."group_id" FROM "manufacturertogroup" V2
WHERE (V2."country" IN (SELECT U0."id" FROM "countries" U0)
AND V2."group_id" IS NOT NULL))
AND "cars"."group_id" IS NOT NULL)
AND "manufacturertogroup"."country" = 123)