2012-11-04 124 views
1

我的模型:Django的查詢集數

class Device(models.Model): 
    build = models.CharField() 
    name = models.CharField() 

如何建立我的查詢集,所以我可以用不同的建立對象的個數。

例如,如果有兩個版本「建立1」和「建立2」,我希望的輸出會告訴我

build 1 = 3 
build 2 = 4 

編輯:嘗試了以下內容:

Device.objects.values('build').annotate(count=Count('pk')) 

輸出爲:

[{'build': u'wed build'}, {'build': u'red build'}, ... ] 
+0

我不確定我是否理解這個問題。你想要一個**單**查詢集可以輸出嗎? –

+0

只需要一個真正有效的方法。我可以迭代構建並獲得計數,但我想看看是否有更好的方法來做到這一點。 – ellieinphilly

回答

8
from django.db.models import Count 

Device.objects.values('build').annotate(count=Count('pk')) 
# -> [{'build': '1', 'count': 3}, {'build': '2', 'count': 4}] 
+0

沒有工作......'build'顯示正常,但計數沒有得到添加... – ellieinphilly

+0

顯示您的代碼,它應該工作。 –

+0

使用mongo但應該不會有效果嗎?另見編輯... – ellieinphilly

3

簡單APPR oach正在調用count

>>> Device.objects.filter(build='1').count() 
3 
>>> Device.objects.filter(build='2').count() 
4