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

Mar*_*mo- 4 django filter django-queryset

我正在使用django查询,这将允许我列出所有和不具有任何特定相关对象的项目.

例如,如果我有模型:

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

def Order(Model):
    customer = ForeignKey(Customer)
Run Code Online (Sandbox Code Playgroud)

现在,我怎么说"给我所有客户的订单,相反,给我所有客户没有订单"?

我到目前为止(这是行不通的)是这样的:

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

without = model.objects.all().annotate(orders=Count('order')).filter(orders__lt=1)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Abi*_*d A 6

怎么样:

所有订单的客户:

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

所有没有订单的客户:

Customer.objects.filter(order__isnull=True)