如何为两个 for 循环设置一个计数器?

Posted

技术标签:

【中文标题】如何为两个 for 循环设置一个计数器?【英文标题】:How to set one counter for two forloops? 【发布时间】:2015-06-27 20:25:51 【问题描述】:

我有桌子:

% for item in items %
    <tr>
        <td> forloop.counter </td>
        <td> item.field </td>
    </tr>
    % for child in item.childs.all %
        <tr>
            <td> forloop.counter </td>
            <td> child.field </td>
        </tr>
    % endfor %
% endfor %

但是第二个 forloop.counter 在第二个循环中从 1 开始计数。我只想为所有行获取一个计数器。怎么做?

【问题讨论】:

【参考方案1】:

您可以write a custom template tag 计算计数器(假设每一行的列数相等):

@register.simple_tag
def abs_counter(row, col, col_total)
    return return ((row - 1) * col_total) + col

% for item in items %
...
    % for child in items.children.all %
        % abs_counter forloop.parentloop.counter forloop.counter items.children.all|length %
    % endfor %
% endfor %

【讨论】:

以上是关于如何为两个 for 循环设置一个计数器?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 textarea 创建字符计数器? (角度)

如何为游戏循环制作计时器?

如何为每个数组元素创建一个计数器?

如何为网站编写高效的计数器

php循环语句

如何重置对象循环“计数器”?