2016-01-22 58 views
3

可以說我有以下型號:Django的:計數具有相同價值的物品

class Book(models.Model): 
    name = models.CharField(max_length=70) 
    lang = models.CharField(max_length=70) 
    author = models.FK(Author) 


class Author(models.Model): 
    name = models.CharField(max_length=70) 

我想寫的東西來獲得與標註的字段作者的列表,用來顯示每個語言的書籍數量。無法想象它的註解:(如{ '恩':10, '儒':1 ...等}

如只是計算所有,Author.objects.annotate(languages=Count(book__lang))

+1

看一看:https://docs.djangoproject.com/en/1.9/topics/db/aggregation/對聚合/註釋 – Brandon

+0

更多信息,我覺得我一直在尋找有,但沒有確切的發現。想法:( –

回答

4

簡單的註解應該可以幫助您:

Book.objects.values('lang').annotate(lang=Count('author')).order_by('lang') 
+0

有沒有辦法做到這一點,而不會將查詢集投到列表中?例如,如果我仍然想使用它? –

+0

那麼建議@suhain給了沒有cas t queryset列表,如果你在返回值上鍵入(query_result)',你會看到它是什麼。 –

+0

是的,是的。它使價值查詢設置。這有點不同。例如。我沒有初始的qs,並且我還有更多的東西在裏面。每個地區額外的項目) –

相關問題