Django условно скрывает поля формы

У меня есть форма ниже, и на основе значения выпадающего списка, выбранного пользователем, я хочу отобразить / скрыть некоторые поля. Например, если пользователь выберет EMI из выпадающего списка, поле EMI из формы будет скрыто. Как я могу этого добиться?

Choices = [('emi', 'EMI'),
                      ('roi', 'Rate of Interest'),
                      ('term', 'Term'),
                      ('amount', 'Loan Amount')]

class loanform(forms.Form):
    calculation = forms.CharField(label='What do you want to calculate?', widget=forms.Select(choices=Choices))
    loanAmount = forms.IntegerField(label='Loan Amount')
    roi = forms.FloatField(label='Rate of Interest')
    term = forms.IntegerField(label='Term in months')
    emi = forms.FloatField(label='EMI')

До того, как вы отрисовали Django Form, вы можете манипулировать им на сервере, как вам заблагорассудится. Но после рендеринга сервер уже не может манипулировать им, потому что он был преобразован в HTML и теперь находится в руках клиента.

Если вы хотите, чтобы значение из Choices повлияло на состав вашего Form, вы должны отправить это значение как часть запроса, который получит ваш Form, и в процессе определить, как будет выглядеть ваш Form.

myForm = loanform()
if request.GET["choice"] == "emi": # [1]
    del myForm.emi

[1] This example assumes that the Client will send a query parameter "choice" as part of the GET request.

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