Django 有条件地隐藏表单字段

问题描述 投票:0回答:1

我有下面的表单,根据用户选择的下拉值,我想显示/隐藏一些字段。例如,如果用户从下拉列表中选择 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 django-forms
1个回答
0
投票

在渲染 Django

Form
之前,您可以按照自己的意愿在服务器上操作它。但是渲染之后,服务器就无法再对其进行操作了,因为它已经以 HTML 形式渲染并且现在掌握在客户端手中。

如果您希望

Choices
中的值影响
Form
的组成,则必须将此值作为获取您的
Form
的请求的一部分发送,并在此过程中确定您的
Form
的外观喜欢。

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

[1] 此示例假设客户端将发送查询参数

"choice"
作为 GET 请求的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.