我有一个场景,其中用于步骤的表单仅在运行时已知。目前,form_list
对于每个step
. 但是在更新的需求中,每个step
都有一些运行时逻辑来确定对应的form_class
. 我正在考虑一种form_list
动态更新的方法。
我尝试覆盖 get_form_list,它使用运行时逻辑来确定表单,并相应地修改 form_list。
网址.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 中获取。