如何从Django中的查询中获取枚举结果?

时间:2010-02-10 10:25:18

标签: python django

我有一个查询根据特定字段对表进行排序。该表与一个竞赛相关,因此了解职位非常重要。

由于表可以增长到有很多行,我使用通用视图对它进行分页(每页25行),但我遇到的问题是在表上显示编号的位置。此信息使用order_by子句生成。

Result.objects.all().order_by('field')

由于我使用通用视图来轻松分页,我没有任何允许我调整结果的视图功能,例如使用enumerate

起初,我想过使用forloop.counter枚举没有桌子的位置,但当然是当你提交第100页的时候,你仍然会得到1,2,3的数字,4,5 ...... 25,而不是2500,2501,2502 ......

我已经看到了annotate()方法,看看我是否可以在每个结果中添加它占据总数的位置,但似乎它只添加像man这样的统计数据等等......

有没有办法在查询的每个结果中添加它占据的位置?

2 个答案:

答案 0 :(得分:3)

如果您在模板中,可以使用以下内容:

{{ forloop.counter0|add:page.start_index }}

分页页面对象上的start_index为您提供该页面的基于1的起始索引。当然,反过来可能更具可读性......

{{ page.start_index|add:forloop.counter0 }}

答案 1 :(得分:0)

如果不是要识别前端的行,为什么不使用当前表的主键?