django相关查询过滤器,搜索有无相关项目的项目

Posted

技术标签:

【中文标题】django相关查询过滤器,搜索有无相关项目的项目【英文标题】:Django related query filter, search for items with and without any related items 【发布时间】:2012-06-03 04:06:57 【问题描述】:

我正在执行 django 查询,该查询将允许我列出所有具有和不具有任何特定相关对象的项目。

例如,如果我有模型:

def Customer(Model):
    name = CharField(...)
    ...

def Order(Model):
    customer = ForeignKey(Customer)

现在,我怎么说“给我所有有订单的客户,反之,给我所有没有订单的客户”?

到目前为止我所拥有的(不起作用)是这样的:

withords = model.objects.all().annotate(orders=Count('order')).filter(orders__gt=0)

without = model.objects.all().annotate(orders=Count('order')).filter(orders__lt=1)

有什么想法吗?

【问题讨论】:

【参考方案1】:

怎么样:

所有有订单的客户:

Customer.objects.filter(order__isnull=False).distinct()

所有没有订单的客户:

Customer.objects.filter(order__isnull=True)

【讨论】:

以上是关于django相关查询过滤器,搜索有无相关项目的项目的主要内容,如果未能解决你的问题,请参考以下文章

Django Queryset:按相关项目管理器过滤

django 查询模型 A 并从相关模型 B 中排除一些项目

Django添加Q过滤器以查询相关对象存在时,条件查询

AWS Amplify API/React:过滤与特定其他项目相关的项目的 LIST 查询

django 查询所有与相关集的过滤?

django项目相关配置方法