2017-02-09 2 views
0

Я не могу заставить Djangos «forloop.counter» увеличиваться. Я пробовал следить за учебниками по сети безрезультатно.Django1.5 forloop.counter не увеличивается в шаблоне

Сначала я заполняю шаблон таким количеством строк, как существует в result_get_list. Затем я могу изменить несколько значений и отправить с помощью POST. Теперь каждая строка в выводимой таблице является ее собственным элементом со значениями. Мой контроллер должен иметь возможность различать каждую строку. Для этого я хотел бы добавить id. Это «_1», который вы видите ниже (второй кодовый блок). Но вместо добавления «_1» для первой строки «_2» для второго ряда, forloop.counter не работает, как я предназначен и каждая строка имеет «_1» прилагается.

мой код на шаблоне выглядит следующим образом:

<form method="post"> 
{% csrf_token %} 

    <div id="div_element"> 
    <table style=" float: left;" width="445"> 
    <tr> 
     <th width="110"><center>Name</center></th> 
     <th width="110"><center>Version</center></th> 
     <th width="110"><center>Timestamp</center></th> 
     <th width="110"><center>Action</center></th> 
    </tr> 
    {% if result_get_list %} 
     {% for result_row in result_get_list %} 
      {% for result_item in result_row %} 
      <tr> 
       <td width="110"><center><input type="text" readonly name="name_{{ forloop.counter }}" value={{result_item.name}}></center></td> 
       <td width="110"><center><input type="text" readonly name="version_{{ forloop.counter }}" value={{result_item.version}}></center></td> 
       <td width="110"><center><input type="text" name="date_{{ forloop.counter }}" value={{result_item.date}}></center></td> 
       <td width="110"><center><select name="selected_post_action_{{ forloop.counter }}"><option>none</option><option>delete</option><option>update</option></select></center></td> 
      </tr> 
      {% endfor %} 
     {% endfor %} 
    {% endif %} 
    </table> 
    </div> 

    <div id="div_nextline_section"> 
     <input type='submit' value='Update!'/> 
    </div> 

</form> 

мои выходы шаблона следующим образом (просмотр источника HTML):

<tr> 
    <td width="110"><center><input type="text" readonly name="Name_1" value=ABCDEF></center></td> 
    <td width="110"><center><input type="text" readonly name="Version_1" value=1></center></td> 
    <td width="110"><center><input type="text" name="theDate_1" value=0></center></td> 
    <td width="110"><center><select name="selected_post_action_1"><option>none</option><option>delete</option><option>expire</option><option>update</option></select></center></td> 
</tr> 
<tr> 
    <td width="110"><center><input type="text" readonly name="Name_1" value=DEFGHI></center></td> 
    <td width="110"><center><input type="text" readonly name="Version_1" value=1></center></td> 
    <td width="110"><center><input type="text" name="theDate_1" value=0></center></td> 
    <td width="110"><center><select name="selected_post_action_1"><option>none</option><option>delete</option><option>expire</option><option>update</option></select></center></td> 
</tr> 
<tr> 
    <td width="110"><center><input type="text" readonly name="Name_1" value=GHIJKL></center></td> 
    <td width="110"><center><input type="text" readonly name="Version_1" value=1></center></td> 
    <td width="110"><center><input type="text" name="theDate_1" value=0></center></td> 
    <td width="110"><center><select name="selected_post_action_1"><option>none</option><option>delete</option><option>expire</option><option>update</option></select></center></td> 
</tr> 

Использование скрипача и захватывая вывод это текущий результат который получает POSTed на контроллер (обратите внимание на «_1»):

name_1=ABCDEF&ersion_1=1&date_1=0&selected_post_action_1=delete& 
name_1=DEFGHI&version_1=1&date_1=0&selected_post_action_1=expire& 
name_1=GHIJKL&version_1=1&date_1=0&selected_post_action_1=update 

Мой требуемый выход (обратите внимание каждой строки увеличивается):

name_1=ABCDEF&ersion_1=1&date_1=0&selected_post_action_1=delete& 
name_2=DEFGHI&version_2=1&date_2=0&selected_post_action_2=expire& 
name_3=GHIJKL&version_3=1&date_3=0&selected_post_action_3=update 

помощь высоко оценили, спасибо!

+0

Я хотел бы добавить это в Django 1.5 с помощью Python 2.7 – New2Python

ответ

0

выяснил. У меня есть вложенный ловушка. Существует еще один параметр для ссылки на родительский forloop: {{}} forloop.parentloop.counter

{% for result_row in result_get_list %} 
    {% for result_item in result_row %} 
    <tr> 
     <td width="110"><center><input type="text" readonly name="name_{{forloop.parentloop.counter}}" value={{result_item.name}}></center></td> 
     <td width="110"><center><input type="text" readonly name="version_{{forloop.parentloop.counter}}" value={{result_item.version}}></center></td> 
     <td width="110"><center><input type="text" name="date_{{forloop.parentloop.counter}}" value={{result_item.date}}></center></td> 
     <td width="110"><center><select name="selected_post_action_{{forloop.parentloop.counter}}"><option>none</option><option>delete</option><option>update</option></select></center></td> 
    </tr> 
    {% endfor %} 
{% endfor %}