我FormWizard(Django的1.4),用户,直到他完成向导步骤来回。 该向导保持所有用户填写的值,并将其显示在情况下,用户可以追溯到他已经完成了一步。
这工作正常,即对CharField但FileFields不起作用。 如果用户在提交包含的FileField的一个步骤的文件并在稍后返回到这一步,他必须再次上传文件。
有没有一种方法,用户将不必重新上传文件?
请注意,表单数据尚未保存到数据库中。
我FormWizard(Django的1.4),用户,直到他完成向导步骤来回。 该向导保持所有用户填写的值,并将其显示在情况下,用户可以追溯到他已经完成了一步。
这工作正常,即对CharField但FileFields不起作用。 如果用户在提交包含的FileField的一个步骤的文件并在稍后返回到这一步,他必须再次上传文件。
有没有一种方法,用户将不必重新上传文件?
请注意,表单数据尚未保存到数据库中。
我最近遇到了同样的问题,并且可以通过继承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)