Настройка количества полей формы на основе аргумента в представлении

У меня есть форма с 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')

Django Forms: передавать параметр форме

Удаление полей из динамической ModelForm

Вернуться на верх