Sea*_*son 0 django django-models django-views
所以这是我的模型:
class Puzzles(models.Model):
user = models.ForeignKey(User)
puzzle = models.CharField(max_length=200)
class Scores(models.Model):
user = models.ForeignKey(User)
puzzle = models.ForeignKey(Puzzles)
score = models.IntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)
因此,用户将获得多个分数。对于排行榜页面,我想输出总得分最高的用户(从所有不同得分中添加)。我真的对执行此操作的python代码迷失了。
任何帮助表示赞赏,谢谢!
最简单的方法是使用注释。
from django.db.models import Sum
best = User.objects.annotate(total_score=Sum('scores__score')).order_by('-total_score')[0:10]
Run Code Online (Sandbox Code Playgroud)
文档中有一个很好的例子。
这是所有谜题的排行榜页面还是仅一个谜题的排行榜页面?如果你可以尝试这样的事情:
Score.objects.all().order_by('score')[:10] # limit 10
Run Code Online (Sandbox Code Playgroud)