【问题标题】:How to get enumerated results from a query in Django?如何从 Django 中的查询中获取枚举结果?
【发布时间】:2010-02-10 10:25:17
【问题描述】:

我有一个根据特定字段对表进行排序的查询。该表与一项比赛相关,因此了解位置很重要。

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

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

由于我使用通用视图来轻松进行分页,因此我没有任何视图功能可以让我调整结果,例如使用enumerate

起初,我想用forloop.counter 来枚举没有表格的位置,但当然问题是,当你展示第 100 页时,你仍然会得到数字为 1,2,3,4 ,5...25,而不是 2500、2501、2502...

我见过annotate()方法,看看我是否可以将它在总数中所占的位置添加到每个结果中,但似乎它只添加了诸如男人之类的统计数据......

有没有什么方法可以在查询的每个结果中添加它所占据的位置?

【问题讨论】:

  • 当您能够在通用视图模板中获取页码时,您可以将其与 forloop.counter 一起使用来计算正确的位置。如果您每页有 25 个结果,并且您想计算第二页的值,您只需使用:forloop.counter + (pagenumber - 1) * 25

标签: python django


【解决方案1】:

如果你在你的模板中,你可以使用类似的东西:

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

分页页面对象上的start_index 为您提供了该页面从1 开始的起始索引。当然,相反的方式可能更具可读性......

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 因为主键不代表位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2019-01-02
    相关资源
    最近更新 更多