我有以下型号:
class Download(models.Model):
id = models.AutoField(primary_key=True)
song = models.ForeignKey(Song)
download_date = models.DateTimeField( auto_now_add=True)
我想知道在一段时间内某些歌曲下载了多少次。
我建立的查询是:
res = Download.objects.filter(download_date__range=[date_1, date_2]).annotate(downloads = Count('id')).values('id', 'song', 'downloads')
我也尝试过计算歌曲,但没有成功。它不断返回重复的歌曲,数量为1。
答案 0 :(得分:1)
试试这个:
Download.objects.filter(download_date__range=[date_1, date_2]).values('song').annotate(downloads = Count('id'))
答案 1 :(得分:0)
您必须更改order_by
。这里解释https://docs.djangoproject.com/en/dev/topics/db/aggregation/#interaction-with-default-ordering-or-order-by
res = Download.objects.filter(download_date__range=[date_1, date_2])\
.annotate(downloads=Count('song'))\
.values('downloads', 'song')\
.order_by()