一尘不染

如何在Django中将本地文件分配给FileField?

django

我试图将磁盘中的文件分配给FileField,但是出现此错误:

AttributeError:’str’对象没有属性’open’

我的python代码:

pdfImage = FileSaver()
pdfImage.myfile.save('new', open('mytest.pdf').read())

和我的models.py

class FileSaver(models.Model):

    myfile = models.FileField(upload_to="files/")

    class Meta:
        managed=False

预先感谢您的帮助


阅读 429

收藏
2020-04-01

共1个答案

一尘不染

Django使用它自己的文件类型(具有明显增强的功能)。无论如何,Django的文件类型就像装饰器一样工作,因此你可以简单地将其包装在现有文件对象周围,以满足Django API的需求。

from django.core.files import File

local_file = open('mytest.pdf')
djangofile = File(local_file)
pdfImage.myfile.save('new', djangofile)
local_file.close()

当然,你可以通过编写以下命令(少一行)来动态修饰文件:

pdfImage.myfile.save('new', File(local_file))
2020-04-01