Динамически обновляйте 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.