#django #django-forms
Вопрос:
я увеличиваю GuestForm
за счет quantity
переменной и зацикливания, которые формируются в шаблоне.
forms = [] for i in range(quantity): if i gt; 0: forms.append(GuestForm()) context = { "guest_forms": enumerate(forms), }
поэтому я отправляю guest_forms и зацикливаю его в шаблоне без проблем. Но, как вы знаете, каждый элемент формы имеет то же name
самое, и когда дело доходит до post
того, что я могу отправить только последний. В конце концов я подумал, что мне нужно перезаписать поля имен в каждом цикле.
forms.append(GuestForm(i=i))
поэтому я отправляю индекс и получаю его в modelform
.
class GuestForm(forms.ModelForm): class Meta: model = Guest fields = ["first_name", "last_name", "post_code", "city", "address", "building", "tel"] def __init__(self, *args, **kwargs): i = kwargs.pop("i") # got the index super(GuestForm, self).__init__(*args, **kwargs) self.fields['first_name'].widget.attrs['name'] = 'first_name' str(i) self.fields['last_name'].widget.attrs['name'] = 'last_name' str(i)
и попытался переименовать имя поля, как указано выше, с i
помощью, но это не сработало. каков наилучший способ увеличить форму с теми же полями?