在django中表单字段依赖于彼此

时间:2013-08-27 15:12:40

标签: django-forms django-formwizard

我有以下表格字段:

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字段将采用另一种形式,在这种情况下,如何获取先前的表单数据并相应地处理以按整数值显示字段。

任何人都可以告诉我,这怎么可以实现?

1 个答案:

答案 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()