我有一个根据特定字段对表进行排序的查询。该表与一项比赛有关,因此了解位置很重要。
由于表格可以增长到很多行,我使用通用 View 对其进行分页(每页 25 行),但我遇到的问题是在表格上显示编号位置。此信息是使用 order_by 子句生成的。
Result.objects.all().order_by('field')
因为我使用的是通用 View 以便于轻松分页,所以我没有任何允许我调整结果的 View 函数,例如使用 enumerate
起初,我想到了使用 forloop.counter 来枚举没有表格的位置,但是当然问题是当你呈现第 100 页时,你仍然会得到数字作为1,2,3,4,5...25,而不是 2500、2501、2502...
我见过 annotate() 方法,看看我是否可以将它在总数中占据的位置添加到每个结果中,但似乎它只添加统计数据,如 man 和等等……
有什么方法可以将查询的每个结果添加到它所占据的位置吗?
请您参考如下方法:
如果你在你的模板中,你可以使用类似的东西:
{{ forloop.counter0|add:page.start_index }}
分页页面对象上的 start_index 为您提供该页面的从 1 开始的起始索引。当然,反过来可能更具可读性......
{{ page.start_index|add:forloop.counter0 }}
