2012-05-28 31 views
4

我在django查詢後,將允許我列出所有做和沒有任何相關對象的項目。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) 

任何想法?

+0

以何種方式對不對工作? –

回答

5

如何:

所有客戶的訂單:

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

所有客戶都沒有訂單:

Customer.objects.filter(order__isnull=True)