0

以下のフォームフィールドがあります:

フォーム.py

class BuildForm(forms.Form):

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

「site_num」フィールドに入力された整数値に従って、フィールド「site_name」を表示する必要があります。例: ユーザーが「No of Sites」に 2 を入力すると、2 つの「site_name」フィールドが表示され、2 つのサイト名を入力する必要があります。

フォーム ウィザードを使用すると、site_name フィールドは別のフォームになります。その場合、以前のフォーム データを取得し、それに応じて処理して、整数値に従ってフィールドを表示するにはどうすればよいですか。

誰でも教えてもらえますか、どうすればこれを達成できますか??

4

1 に答える 1

1

解決済み:

ビューでフォーム ウィザードの 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関数。

フォーム.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 に答える