我有一个像这样的简单上传模型:
class UploadFile(models.Model):
file_field = models.FileField(upload_to='files/%Y/%m/%d')
和相应的模型形式如下:
class UploadFileForm(forms.ModelForm):
class Meta:
model = UploadFile
fields = (\
"file_field", \
)
我的观点也很简单,就像这样:
def home(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
print request.POST, request.FILES
if form.is_valid():
print "yes, form is valid"
else:
print form.errors
<rest of the view code here..>
现在,我总是得到这个错误:
<ul class="errorlist"><li>file_field<ul class="errorlist"><li>This field is required. </li></ul></li></ul>
有趣的是,当我将模型名称从file_field
更改为file
时 - 一切都按预期工作!理想情况下,我想将字段命名为file_field
,而不只是file
。
我确实看到查询字典看起来像这样:
<QueryDict: {u'csrfmiddlewaretoken': [u'xCSgqBdgdKlZ0nUUcTICL1YvYn1k5']}> <MultiValueDict: {u'file': [<InMemoryUploadedFile: fileersd.pdf (application/pdf)>]}>
如何告诉django file_field
基本上是来自上面查询字典的file
?
所以,当我想绑定表单时:
form = UploadFileForm(request.POST, request.FILES)
我想说我的模型/表单中的file_field
与request.FILES['file']
相同..如果这有意义吗?
答案 0 :(得分:0)
如果您声明使用了dropzone.js会有所帮助,因为看起来问题完全存在。查看该库的the docs,我看到以下内容:
如果您想要其他名称而不是
file
,则可以使用paramName
选项配置dropzone。
因此您应该只需将paramName: "file_field"
添加到Dropzone.options.myDropzone
对象。