私は最近同じ問題に遭遇し、Django の SessionWizardView (私の場合は NamedUrlSessionWizardView) をサブクラス化し、get_form メソッドをオーバーライドすることで解決できました。
基本的に私は次のことを行います:
- ステップ用に既に保存されているファイルを取得します。
- 現在送信されているファイルを反復処理します。
- 送信されたファイルが None の場合は無視し、それ以外の場合は既に保存されている値を上書きします。
コードは次のとおりです。
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)