我有这个models.py
class Download(models.Model):
id = models.AutoField(primary_key=True)
song = models.ForeignKey(Song)
download_date = models.DateTimeField( auto_now_add=True)
class Song(models.Model):
file_id = models.AutoField(primary_key=True)
user = models.ForeignKey(User)
我想构建一个查询,以了解所有用户的歌曲下载次数。我计划将其显示为:User45(56下载),User46(44下载)等。
我无法按用户对下载进行分组,因为三联接似乎无效。
我有这个:
var = Download.objects.filter(download_date__day=today.day, download_date__month=today.month, download_date__year=today.month).values('song', 'song__user', 'song__user__first_name', 'song__user__last_name').annotate(numer_downloads = Count('song__user')).order_by('-numer_downloads')
非常感谢您的回答。
答案 0 :(得分:0)
我认为你最好在Song类上做过滤器,如下所示:
songs = Song.objects.annotate(download_count=Count('download_set')).all().order_by('-download_set')
然后在你的模板中你会做这样的事情:
{% for song in songs %}
{{ song.user.username }} ({{ song.download_count }})
{% endfor %}