我是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))
感谢您的帮助。
答案 0 :(得分:2)
您需要将<form>
标记放在for
循环中,这样您实际上创建了10种不同的表单,而不是10个相同表单元素的副本。但是你仍然有一个问题,你需要10个单独的提交按钮。如果您实际上在寻找表单列表,请查看Django FormSet
documentation.