首页 > 解决方案 > 如何在所有页面上获取 django 分页唯一项目 ID?

问题描述

我正在学习如何实现 django 分页。我想让用户在单击“全部保存”按钮时保存所有更改(无论哪个分页都是整个表单)。但是,当使用forloop.counter0时,django 将呈现重复的 forloop 计数器。如何生成从 0 到 n-1 的连续唯一 ID,以便在 views.py 中,视图可以识别每个项目?谢谢!

{% for thing in things %}
    <tr id="tr-{{ thing.id }}">
        <td style="display:none"><input type="text" name="hidden-id-{{ forloop.counter0 }}" value="{{ thing.id }}"></td>

    </tr>
{% endfor %}

是否存在任何方法,例如加上 pagecounter 和 forloop 计数器?

标签: djangopagination

解决方案


经过一些试验和错误:我发现 django 默认情况下(或者可能总是)不允许我们在所有页面(分页)中保存内容。要在所有页面中生成唯一 ID,我们可以使用|add过滤器和 django 自动生成的 start_index 属性。

 {% for thing in things %}
          <tr id="tr-{{ thing.id }}">
            <td style="display:none"><input type="text" name="hidden-id-{{ things.start_index |add:forloop.counter0 }}"  value="{{ thing.id }}"></td>
          </tr>
 {% endfor %}

推荐阅读