Динамически обновляйте form_list, чтобы он указывал на некоторый подкласс (известный только во время выполнения) для шага, и отображал эту форму

У меня есть сценарий, где формы для шагов известны только во время выполнения. В настоящее время, form_list статичен для каждого step, Но в обновленных требованиях каждый step имеет некоторую логику времени выполнения, чтобы определить соответствующий form_class, Я думал о способе обновить form_list динамически.

Я попытался переопределить get_form_list, который использует логику времени выполнения для определения формы и соответственно изменяет form_list.

urls.py

named_forms = views.FormView.form_list

contact_wizard = views.FormView.as_view(named_forms,
                                                url_name=<the url name>,
                                                done_step_name='finished')

url-patterns = [
    path('path', contact_wizard, name='form1')
]

колдун

class FormView(NamedUrlSessionWizardView,):
    form_list = (                           //static one
        ("step-one", FormStepOne),
        ("step-two", FormStepTwo),
        ("step-three", FormStepThree),
    )

    def get_form_list(self):          //updates form_list according to some logic
        self.form_list = OrderedDict()
        self.form_list["step-one"] = 
            self.integration_class.step_one_form_class
        self.form_list["step-two"] = 
            self.integration_class.step_two_form_class
        self.form_list["step-three"] = 
            self.integration_class.step_three_form_class
        return super().get_form_list()

Form_list обновляется корректно, но форма не отображается в соответствии с новым form-list. Визуализированная форма извлекается только из старого статического form_list.

0 ответов

Другие вопросы по тегам