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 查询模型 A 并从相关模型 B 中排除一些项目