在Django中的表单模板中创建表单元素ID

时间:2012-01-13 18:19:35

标签: django django-models django-forms django-templates django-views

我是Django的新手,我正在尝试创建一个包含下拉列表的表单。这是用于在单击提交时基于这些下拉列表中的用户选择生成脚本。

问题是以下表单模板正在创建重复的表单元素ID

  
    

如果要重复下拉,我如何在表单模板中创建唯一ID。

  

以下是下拉列表的代码。

<html>
<table border="1">
  <form action="/PrintTestScript/" method="post">
  {% csrf_token %}
  <tr>
    <th>Action</th>
    <th>Endpoint</th>
    <th>Status</th>
    <th>Box Type</th>
  </tr>
  {% for i in 0123456789|make_list %}
  <tr>
    <td>
       {{form.action}}
    </td>
    <td>
       {{form.series}}
    </td>
    <td>
       {{form.epstatus}}
    </td>
    <td>
       {{form.boxtype}}
  </tr>
  {% endfor %}
  <tr>
    <td>
      <input type="submit" value="Submit" />
    </td>
  </tr>
 </form>
 </table>
 </html>

以下是表单类定义。

  class TestForm(ModelForm):
      action = forms.ModelChoiceField(queryset=actions.objects.all(), empty_label="")
      series = forms.ModelChoiceField(queryset=endpoints.objects.all(), empty_label="")
      epstatus = forms.ModelChoiceField(queryset=status.objects.all(), empty_label="")
      boxtype = forms.ModelChoiceField(queryset=boxtype.objects.all())

      class Meta:
          model = endpoints
          exclude = ('end_point_alias', 'dial_num', 'ip_address')

这是创建视图的地方

def getvals(request):
      form = TestForm()

      return render_to_response('main.html', {'form':form}, context_instance=RequestContext(request))

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您需要将<form>标记放在for循环中,这样您实际上创建了10种不同的表单,而不是10个相同表单元素的副本。但是你仍然有一个问题,你需要10个单独的提交按钮。如果您实际上在寻找表单列表,请查看Django FormSet documentation.