首页 > 解决方案 > Django ORM:如何对相关字段进行多条件过滤?

问题描述

例如,我们有这些模型:

我想排除所有产品都满足条件的订单(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)
)

标签: djangodjango-orm

解决方案


推荐阅读