我创建了一个NamedTemporaryFile,在其中添加了一些内容,现在我想将它保存到模型FileField中。
问题是我收到了SuspiciousOperation,因为tmp目录不在FileSystemStorage目录中。
这样做的正确方法是什么?
答案 0 :(得分:4)
您希望django为您检查它,因为它确保文件放在MEDIA_ROOT目录中,以便可以下载。
在任何情况下,你想把文件放在MEDIA_ROOT之外(在这种情况下是'/ tmp'),你应该这样做:
from django.core.files.storage import FileSystemStorage
fs = FileSystemStorage(location='/tmp')
class YourModel(models.Model):
...
file_field = models.FileField(..., storage=fs)
答案 1 :(得分:1)
我最终做了romke解释的对话方式:我正在MEDIA_ROOT中创建临时文件。
另一个解决方案是使用/ tmp中的文件,然后将其移动到MEDIA_ROOT。
我最初的困惑来自表单处理上传文件的方式:它们位于/ tmp目录(或内存)中,然后自动移动到upload_to目录。我一直在寻找在Django中做到这一点的通用方法。