Leo*_*dom 30 python django filefield
我试图从我的磁盘分配文件到FileField,但我有这个错误:
AttributeError:'str'对象没有属性'open'
我的python代码:
pdfImage = FileSaver()
pdfImage.myfile.save('new', open('mytest.pdf').read())
Run Code Online (Sandbox Code Playgroud)
和我的models.py
class FileSaver(models.Model):
myfile = models.FileField(upload_to="files/")
class Meta:
managed=False
Run Code Online (Sandbox Code Playgroud)
预先感谢您的帮助
tux*_*21b 40
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()
Run Code Online (Sandbox Code Playgroud)
您当然可以通过编写以下内容来装饰文件(少一行):
pdfImage.myfile.save('new', File(local_file))
Run Code Online (Sandbox Code Playgroud)
如果不想打开文件,也可以将文件移动到 media 文件夹中,直接设置 myfile.name 为MEDIA_ROOT 的相对路径:
import os
os.rename('mytest.pdf', '/media/files/mytest.pdf')
pdfImage = FileSaver()
pdfImage.myfile.name = '/files/mytest.pdf'
pdfImage.save()
Run Code Online (Sandbox Code Playgroud)