Django根据外键对字段求和

标签 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)

所以一个用户会有多个分数。对于排行榜页面,我想输出总分最高的用户(从所有不同的分数中添加)。我真的不知道 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/

相关文章:

javascript - 在 django 模板中打开链接内容

html - 以 HTML 格式显示 Django 查询结果 - 表格、列表、CSS div?

django - 找不到页面 (404) Django : 错误

python - Django 排除列表中*每个*项目的查询集 __in

python - Django - 在基于类的 View 中从另一个调用一个类方法

python - Django:如何通过单击一行来更改页面?

python - 自定义验证器中的 XML ParseError : junk after document element: line 1, 第 11 列 (Wagtail)

python - 在数据库中已有数据之后添加的 UUID 字段。有没有办法为现有数据填充 UUID 字段?

python - Django:计算与查询匹配的内容标签

python - 如何从 Django 模型中获取 ID