2015-07-11 40 views
1

我有以下型號:Django的,如何使用計數Q中

class Group(models.Model): 

    group_name = models.CharField(max_length=16) 

class Member(models.Model): 

    group = models.ForeignKey('Group') 
    member_name = models.CharField(max_length=16) 
    gender = models.BooleanField() #False is "female", True is "male" 

我怎樣才能找到一個Group誰沒有Member,或者男性Member S的數量是零?

我嘗試以下,但它沒有工作:

Group.objects.filter(Q(member__isnull=True) | 
         Q(member__isnull=False) & 
         Q(Count(member__gender=True)=0)) 

回答

2

解決方案,

Group.objects.filter(Q(member__isnull=True) | ~Q(member__gender=True)) 

當你試圖獲取一些可能返回多個結果,你應該使用過濾器而不是得到

如果要計算查詢集,可以使用

Group.objects.filter(Q(member__gender=False)).count() 
+0

是的,過濾器是正確的,但你的解決方案不工作。我想找到沒有成員或全體成員都是女性的「小組」。 –

+0

@RichardYang我在編輯我的答案,看一看! – Sentient07

+0

(1)Group.objects.filter(Q(member__isnull = True)|〜Q(member__gender = True))。distinct(),你應該添加不同的。 (2)你的解決方案是對的,因爲它不健壯。如果我想要「男性會員是2」怎麼辦? (3)但無論如何,所以標記你的答案有用。 –