0

如何动态生成文本框数组, 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>

先感谢您。

4

1 回答 1

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()
于 2013-10-28T08:54:31.003 回答