前のフォームに戻る前に現在のフォームのデータを検証して保存する場合はpost()
、 のサブクラスでメソッドをオーバーライドする必要がありますSessionWizardView
。探しているメソッドは、現在のフォーム データself.storage.set_step_data()
をself.storage.set_step_files()
保存することです。
大まかな例:
def post(self, *args, **kwargs):
go_to_step = self.request.POST.get('wizard_goto_step', None) # get the step name
form = self.get_form(data=self.request.POST, files=self.request.FILES)
current_index = self.get_step_index(self.steps.current)
goto_index = self.get_step_index(go_to_step)
if current_index > goto_index:
if form.is_valid():
self.storage.set_step_data(self.steps.current,
self.process_step(form))
self.storage.set_step_files(self.steps.current,
self.process_step_files(form))
else:
return self.render(form)
return super(NominateFormWizard, self).post(*args, **kwargs)