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.