Например, у нас есть эти модели:
- Заказ (имя, ...)
- Товар (заказ, наименование, а, б, в)
И я хочу исключить заказы, если все товары удовлетворяют условию (p.a > 0 or p.b > 0) and p.c == 0
.
Что я пробовал до сих пор:
Order.objects.all().exclude(
Q(products__a__gt=0)
| Q(products__b__gt=0),
products__c=0,
)
Но этот запрос отфильтрует заказы, если какое-либо из сопутствующих товаров удовлетворяет условию.
Решено это путем переключения логики от ВСЕХ к ЛЮБОМУ:
Order.objects.filter(user=user).filter(
Q(products__c__gt=0)
| Q(products__a=0, products__b=0)
)