我正在尝试使用Django 1.3 FormWizard上传一个包含两个步骤的文件: 1.只有FileField 2.如果文件已正确上传且有效(在自定义验证后),请提供给它一个名称和说明。
在文档之后,我写道:
class CreateCheckWizard(FormWizard):
def done(self, request, form_list):
return HttpResponseRedirect('/my_checks/')
def get_template(self, step):
return ['create_check_%s.html' % step, 'create_check_1.html']
class CreateCheckForm1(forms.Form):
my_file = forms.FileField()
class CreateCheckForm2(forms.Form):
title = forms.CharField(max_length=255)
我将multipart / form-data添加到模板中的FORM标记:
<form enctype="multipart/form-data" action="." method="post">
但是,即使我上传文件,也会收到错误“此字段是必填项。”
我想创建的表单省略了request.FILES字段。 我们如何更改该行为以成功上传FormWizard中的文件?
编辑:看看Django源代码,它确实使用form(request.POST)
而不是form(request.POST, request.FILES)
来创建表单,就像应该处理文件一样。
有没有更改源代码上传文件的方法?
答案 0 :(得分:5)
这在Django 1.3表单向导中是不可能的。来自Django form wizard docs:
重要限制:由于向导使用HTML隐藏字段在页面之间存储数据,因此除最后一个外,您可能不会包含任何形式的FileField
可以使用Django 1.4表单向导(参见handling files docs)。如果您使用的是Django 1.3,则可以将新表单向导安装为separate app。