如何动态生成文本框数组,以获取带有名称的多个输入文本
document_line_value[]
使用django表单?,只有在不使用django表单的情况下手动生成表单代码,我才能这样做,但我想使用django表单进行验证和其他有用的东西。
from django import forms
class EditDocumentForm(forms.Form):
def __init__(self, document_lines, *args, **kwargs):
super(EditDocumentForm, self).__init__(*args, **kwargs)
for document_line in document_lines:
self.fields['document_line_value[]'] = forms.FloatField(label='value')
它只显示最后一个元素:
<input type='text' name='document_line_value[]' />
我想在表单上有几个这样的数组,它们是表中的一行:
<tr>
<td><input type='text' name='document_line_value[]' /></td>
<td><input type='text' name='document_line_id[]' /></td>
<td> <input type='text' name='document_line_comment[]' /></td>
<tr>
<tr>
<td><input type='text' name='document_line_value[]' /></td>
<td><input type='text' name='document_line_id[]' /></td>
<td> <input type='text' name='document_line_comment[]' /></td>
<tr>
提前谢谢。
答案 0 :(得分:0)
我相信您正在寻找FormSet
课程。
应该注意,field[]
语法是PHP功能,通常只有PHP支持。要求在字段名称后使用[]
没有技术原因。
示例:
from django import forms
class Document(forms.Form):
line_value = forms.CharField()
line_id = forms.IntegerField()
line_comment = forms.CharField(widget=forms.Textarea())
DocumentFormSet = formsets.formset_factory(Document)
def your_view(request):
formset = DocumentFormSet()