You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django分页后forloop.counter重置如何实现任务序号全局连续?

解决方案

直接修改模板内的序号输出逻辑即可,无需自定义额外模板标签,修改后的循环部分代码如下:

{% for task in tasks %}
<tbody>
<tr>
    <!-- 替换原有的 {{ forloop.counter }} -->
    <th scope="row" class="col-md-1">{{ page_obj.start_index|add:forloop.counter0 }}</th>
    <td class="col-md-2">{{ task.title }}</td>
    <td class="col-md-3">{{ task.description|truncatewords:10 }}</td>
    <td class="col-md-2">{{ task.time|date:"H:i" }} - {{ task.time|date:"D d M , Y" }}</td>
</tr>
</tbody>
{% endfor %}

实现逻辑

  • Django分页的page_obj对象内置start_index属性,返回当前页第一条数据在全量数据集中的全局序号(从1开始计数)
  • forloop.counter0返回当前循环的索引,从0开始计数
  • 两者相加即可得到全局连续的序号,切换分页时不会重置计数
  • 如果你的视图中传递给模板的分页对象名称不是page_obj,将代码中的对应变量替换为你实际使用的变量名即可

你也可以使用显式计算的等效写法,逻辑更直观:

{{ (page_obj.number - 1) * page_obj.paginator.per_page + forloop.counter }}

内容的提问来源于stack exchange,提问作者Fateme Fouladkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:48:04