Django ORM:如何在相关字段上进行多条件过滤?

时间:2019-04-11 10:14:08

标签: django django-orm

例如,我们有以下模型:

  • 订单(名称,...)
  • 产品(订单,名称,a,b,c)

我想排除所有满足条件(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,
)

但是,如果任何相关产品满足条件,此查询将过滤掉订单。

通过将逻辑从ALL转换为ANY来解决此问题:

Order.objects.filter(user=user).filter(
    Q(products__c__gt=0)
    | Q(products__a=0, products__b=0)
)

0 个答案:

没有答案