【问题标题】:How to extract File Object from Django Form FileField如何从 Django Form FileField 中提取文件对象
【发布时间】:2012-08-22 22:27:57
【问题描述】:

我创建了一个 ModelForm,其中包含 titlefilecontent 字段。这里file 是一个 FileField()。但是由于某些原因,我无法调用此表单的save() 方法。所以我必须手动创建一个模型对象并将清理后的值分配给该对象。除了那个 FileField 之外,一切都正常工作。该文件未保存。我怎样才能解决这个问题?提取FileField的方法正确吗?

表格

class TestForm(forms.ModelForm):
    class Meta:
        model = Test
        fields = ('title','file', 'content',)

Views.py

 form = TestForm(request.POST,request.FILES)
 if form.is_valid():
     content = form.cleaned_data['content']
     file = form.cleaned_data['file']
     title = form.cleaned_data['title']
     fax = Fax()
     fax.title = title
     fax.file = file
     fax.content = content
     fax.save()

此处文件未保存。我怎样才能解决这个问题? 任何帮助将不胜感激!

【问题讨论】:

  • 而不是 form.cleaned_data['file'],使用 request.FILES['file'] - 见docs.djangoproject.com/en/dev/topics/http/file-uploads/…
  • 为什么不能在表单上调用save方法?应该是正确的方法。
  • @super9 因为我用它创建了多个对象。代码中有一个循环,为了方便描述我就省略了

标签: django django-models django-forms django-file-upload


【解决方案1】:

请使用这种类型的验证。这可能有效

if request.method == 'POST':
    form = ModelFormWithFileField(request.POST, request.FILES)
    if form.is_valid():
        # file is saved
        form.save()
        return HttpResponseRedirect('/success/url/')``

【讨论】:

    【解决方案2】:

    你有没有在你的表单中使用enctype="multipart/form-data" 好像代码没问题。

    【讨论】:

      【解决方案3】:

      我认为你可以使用

      request.FILES['file']
      

      用于获取文件对象

      【讨论】:

        猜你喜欢
        • 2019-12-24
        • 1970-01-01
        • 1970-01-01
        • 2011-09-17
        • 2019-02-27
        • 1970-01-01
        • 1970-01-01
        • 2022-08-04
        • 2012-11-04
        相关资源
        最近更新 更多