我创建了一个NamedTemporaryFile,向其中添加了一些内容,现在我想将其保存到模型的FileField中。
问题是,我得到了一个SuspiciousOperation错误,因为tmp目录不在FileSystemStorage目录内。
正确的方法是什么?
问题是,我得到了一个SuspiciousOperation错误,因为tmp目录不在FileSystemStorage目录内。
正确的方法是什么?
无论如何,如果你想将文件放在MEDIA_ROOT之外(在本例中是“/tmp”),你应该像这样做:
from django.core.files.storage import FileSystemStorage
fs = FileSystemStorage(location='/tmp')
class YourModel(models.Model):
...
file_field = models.FileField(..., storage=fs)
查看Django documentation">Django文档
我最终采用了与romke相反的方式:我在MEDIA_ROOT中创建临时文件。
另一种解决方案是在/tmp中处理文件,然后将其移动到MEDIA_ROOT。
我的初始困惑来自于表单处理上传文件的方式:它们位于/tmp目录(或内存)中,然后自动移动到upload_to目录。我正在寻找在Django中通用的方法。