我最近遇到了同樣的問題,可以通過繼承Django的SessionWizardView(在我的情況下是NamedUrlSessionWizardView)並重寫get_form方法來解決它。
Basicly我做到以下幾點:
- 獲取已存儲的步驟中的文件。
- 迭代當前提交的文件。
- 如果提交的文件是無,忽略它,否則覆蓋已存儲的值。
下面是代碼:
from django.contrib.formtools.wizard.views import NamedUrlSessionWizardView
class MyWizardView(NamedUrlSessionWizardView):
def get_form(self, step=None, data=None, files=None):
if step:
step_files = self.storage.get_step_files(step)
else:
step_files = self.storage.current_step_files
if step_files and files:
for key, value in step_files.items():
if files.has_key(key) and files[key] is not None:
step_files[key] = files[key]
elif files:
step_files = files
return super(MyWizardView, self).get_form(step, data, step_files)