gpt4 book ai didi

django - django模板中查询集的简单排名

转载 作者:行者123 更新时间:2023-12-01 19:29:17 27 4
gpt4 key购买 nike

我在一个简单的 django 应用程序中有一个模型,可以记录参加比赛的人的分数。我有两个模型对象,Entry 和 Person。每个条目有一个人,一个人有多个条目。

我想生成一个页面,显示每个用户、他们的总分和排名。

到目前为止我得到的命令如下:

Entry.objects.values('person__name').annotate(total=Sum('score')).order_by('-total')

我可以使用 for block 很好地将结果输出到页面上。我唯一不知道的是排名。

向每个记录添加该记录的数字排名的最佳方式是什么,包括当两个分数相同时,排名反射(reflect)这一点(即“4=”)?尝试在模板中使用 forblock.counter 和一些向前/向后机制来执行此操作,或者尝试将此字段添加到查询本身中会更好吗?

最佳答案

这种事情非常棘手。实际上,我会在 View 中完成所有工作,修改其中的查询集并将其传递到模板上。

rank = 1
previous = None
entries = list(entries)
previous = entries[0]
previous.rank = 1
for i, entry in enumerate(entries[1:]):
if entry.value != previous.value:
rank = i + 2
entry.rank = str(rank)
else:
entry.rank = "%s=" % rank
previous.rank = entry.rank
previous = entry

关于django - django模板中查询集的简单排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4830824/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com