0

我有以下表单字段:

表格.py

class BuildForm(forms.Form):

   site_num  = forms.IntegerField(label=("No of Sites"))
   site_name = forms.CharField(label=("Site Name"))

我希望字段“site_name”应该按照在“site_num”字段中输入的整数值显示。例如:如果用户在“站点数量”中输入 2,则应显示两个“站点名称”字段以输入两个站点名称。

如果我使用表单向导,那么 site_name 字段将采用另一种形式,在这种情况下,我如何获取以前的表单数据并相应地处理以根据整数值显示字段。

谁能告诉我,这怎么能实现?

4

1 回答 1

1

已解决

我在视图中覆盖了表单向导的 get_form_kwargs 方法

视图.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函数。

表格.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()
于 2013-08-28T08:02:10.540 回答