这是我的模型:
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)
所以一个用户会有多个分数。对于排行榜页面,我想输出总分最高的用户(从所有不同的分数中添加)。我真的不知道 python 代码会做什么。
任何帮助表示赞赏, 谢谢!
最佳答案
最简单的方法是使用注释。
from django.db.models import Sum
best = User.objects.annotate(total_score=Sum('scores__score')).order_by('-total_score')[0:10]
文档有一个 example说的很对。
关于Django根据外键对字段求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18198977/