我創建了一個NamedTemporaryFile,在其中添加了一些內容,現在我想將它保存到模型FileField中。如何在Django中將NamedTemporaryFile保存到模型FileField中?
的問題是,我得到一個SuspiciousOperation因爲tmp目錄不在FileSystemStorage目錄中。
什麼是做到這一點的正確方法?
我創建了一個NamedTemporaryFile,在其中添加了一些內容,現在我想將它保存到模型FileField中。如何在Django中將NamedTemporaryFile保存到模型FileField中?
的問題是,我得到一個SuspiciousOperation因爲tmp目錄不在FileSystemStorage目錄中。
什麼是做到這一點的正確方法?
你想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)
我最後做的oposite方式romke解釋說:我在MEDIA_ROOT中創建臨時文件。
另一種解決方案可以與/ tmp中文件來工作,然後移動它來MEDIA_ROOT。
我最初的困惑來自於形式上傳的文件的工作方式:它們位於/ tmp目錄(或內存),然後自動移動到upload_to目錄。我正在尋找一種在Django中使用它的通用方法。