Вы можете создать повторяющиеся поля в методе __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())
Подробнее о динамических формах можно узнать, например, здесь
edit: чтобы ответить на вопрос в вашем комментарии: просто укажите количество повторений в качестве аргумента метода __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)