2015-04-20 6 views
1

У меня есть таблица:Как установить один счетчик на два forloops?

{% 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. Я хочу, чтобы получить только один счетчик для всех строк. Как это сделать?

ответ

3

Вы можете 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 %} 
Смежные вопросы