您可以在中创建重复字段__init__
表格的方法:
class PaymentsForm(forms.Form):
invoice = forms.CharField(widget=forms.HiddenInput())
total = forms.CharField(widget=forms.HiddenInput())
def __init__(self, *args, **kwargs):
super(PaymentsForm, self).__init__(*args, **kwargs)
for i in xrange(10):
self.fields['item_name_%d' % i] = forms.CharField(widget=forms.HiddenInput())
有关动态表单的更多信息,请参见here http://www.b-list.org/weblog/2008/nov/09/dynamic-forms/
编辑:回答评论中的问题:只需将重复次数作为参数给出__init__
方法,像这样:
def __init__(self, repetitions, *args, **kwargs):
super(PaymentsForm, self).__init__(*args, **kwargs)
for i in xrange(repetitions):
self.fields['item_name_%d' % i] = forms.CharField(widget=forms.HiddenInput())
然后在您的视图中(或您创建表单的任何位置):
payments_form = PaymentsForm(10)