Настройка количества полей формы на основе аргумента в представлении
У меня есть форма с 4 полями.
class data_collect_form(forms.Form):
data_entry1 = forms.IntegerField(widget = forms.NumberInput(attrs={"class":"form-control","initial":0}))
data_entry2 = forms.IntegerField(widget = forms.NumberInput(attrs={"class":"form-control","initial":0})
data_entry3 = forms.IntegerField(widget = forms.NumberInput(attrs={"class":"form-control","initial":0})
data_entry4 = forms.IntegerField(widget = forms.NumberInput(attrs={"class":"form-control","initial":0}))
На основании аргумента "number_of_fields" в представлении, я хочу удалить последние поля этой формы.
Вот вид:
def add_submission(request, number_of_fields ):
#delete number of fields of data_collect_form according to number_of_fields argument
if request.method == 'POST':
form2 = data_collect_form(request.POST)
else:
form2 = data_collect_form()
return render(request, 'main/second.html',{"form2":form2)
Я уверен, что это возможно с помощью метода __init__
, но у меня нет понимания, как правильно его написать.
должен быть довольно простым, как это:
number_of_fields = 3
form2 = data_collect_form(number_of_fields)
init для класса data_collect_form
def __init__(self, number_of_fields, *args, **kwargs):
super(data_collect_form, self).__init__(*args, **kwargs)
if number_of_fields < 4:
self.fields.pop('data_entry4')