0
在下面的(超簡化)代碼中,函數get_top_authors()
爲我提供了作者列表,每個作者列出其發佈的文章數量,從具有大多數文章的作者排序到作者的文章數量最少,功能get_articles_per_year()
給了我一份每年發佈的整篇數據庫文章的清單。在Django中通過M2M字段註釋值和組
如果我想每個作者(或者前五名)每年的文章數量,我可以重新查詢N(或5)次。但是,有沒有更有效的方法來做到這一點?
from django.db import models
class Author:
name = models.TextField()
class Article:
author = models.ManyToManyField(Author)
year = models.IntegerField()
def get_top_authors():
top_authors = Author.objects.all() \
.annotate(articles=models.Count('article')).order_by('-articles')
def get_articles_per_year():
return Article.objects.all()
.values('year').order_by('year') \
.annotate(articles=models.Count('year'))