我正在处理一些非常大的文件,这些文件很难通过http上传,因此我的用户使用FTP上传文件,然后我的代码需要移动到FileField.upload_to(通常通过HTTP上传时它们通常会结束)。我的问题是,通常建议使用django.core.files.File
的方法:
from django.core.files import File
# filename is a FileField
file_obj = MyModel(filename=File(open('VIDEO_TS.tar', 'rb')))
导致复制数据,我需要避免。有没有办法将现有文件添加到FileField,同时确保调用upload_to?
答案 0 :(得分:3)
有点晚了,但是:
class _ExistingFile(UploadedFile):
""" Utility class for importing existing files to FileField's. """
def __init__(self, path, *args, **kwargs):
self.path = path
super(_ExistingFile, self).__init__(*args, **kwargs)
def temporary_file_path(self):
return self.path
def close(self):
pass
def __len__(self):
return 0
用法:
my_model.file_field.save(upload_to, _ExistingFile('VIDEO_TS.tar'))
答案 1 :(得分:0)
我想说最简单的方法就是编写自己的字段或存储空间。