如果您希望它在回到先前表單之前驗證並保存當前表單中的數據,則需要覆蓋SessionWizardView
的子類中的post()
方法。您正在查找的方法是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)
我認爲這是預期的,因爲用戶只想在下一步時提交數據。當移動到上一步時,用戶可能沒有填充當前步驟中的任何數據! – Rohan
爲什麼在進行上一步時驗證數據?在這種情況下,你將發佈到不同的視圖(前一個視圖),因此當然不會驗證。 –
我已經讓用戶抱怨它沒有保存數據,當轉到上一步。 :\ – gmorell