我有以下表格字段:
forms.py
class BuildForm(forms.Form):
site_num = forms.IntegerField(label=("No of Sites"))
site_name = forms.CharField(label=("Site Name"))
我希望字段“site_name”应按照“site_num”字段中输入的整数值显示。 例如:如果用户在“No of Sites”中输入2,则应显示两个“site_name”字段以输入两个站点名称。
如果我使用表单向导,那么site_name字段将采用另一种形式,在这种情况下,如何获取先前的表单数据并相应地处理以按整数值显示字段。
任何人都可以告诉我,这怎么可以实现?
答案 0 :(得分:0)
已解决:
我已在视图
中覆盖了表单向导的get_form_kwargs方法view.py
class FormWizard(SessionWizardView):
def get_form_kwargs(self, step=None):
kwargs = {}
if step == '2':
site_num = self.get_cleaned_data_for_step('1')['site_num']
kwargs.update({'site_num': site_num,})
return kwargs
以及带有site_name字段的表单的 init 函数。
forms.py
class MyForm(forms.Form):
#some fields
class MyForm1(forms.Form):
site_num = forms.IntegerField()
class MyForm2(forms.Form):
def __init__(self, *args, **kwargs):
extra = kwargs.pop('site_num')
super(MyForm2, self).__init__(*args, **kwargs)
for i in range(extra):
self.fields['site_name_%s' % i] = forms.CharField()