2010-02-10 59 views
2

我有一个查询根据特定的字段对表进行排序。该表与一个竞赛有关,因此了解该位置非常重要。如何在Django中查询枚举结果?

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

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

由于我使用通用视图能够轻松分页,我不使用enumerate

起初有让我调整结果的任何视图功能,例如,我想使用forloop.counter来枚举没有表格的位置,但当然,当您呈现第100页时,我们会得到数字1,2,3,4,5 ... 25,而不是2500 ,2501,2502 ...

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

有什么方法可以将每个查询结果添加到它所占据的位置吗?

+0

当你能够得到你的通用视图页码模板可以一起用它来与forloop.counter来计算正确的位置。如果每页有25个结果,并且想要计算第二页的值,则只需使用以下代码:forloop.counter +(pagenumber - 1)* 25 – Jens 2010-02-10 10:35:13

回答

3

如果你在你的模板的时候,你可以使用类似:

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

start_index在分页的页面对象为您提供了该网页从1开始的起始索引。当然,周围的其他方法可能是更具可读性...

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

链接:http://docs.djangoproject.com/zh/1.1/topics/pagination/#page-objects – 2010-02-10 10:35:51

+0

太棒了!有用! ;-) – Khelben 2010-02-10 10:42:50

0

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

+0

因为主键不表示位置。 – Khelben 2010-02-10 10:34:51