Django相关查询过滤器,搜索有和没有任何相关项目的项目

时间:2012-05-28 21:28:48

标签: django filter django-queryset

我正在进行一个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 个答案:

答案 0 :(得分:6)

怎么样:

所有订单客户:

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

所有没有订单的客户:

Customer.objects.filter(order__isnull=True)