1

我正在处理一些通过 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')))

导致复制数据,我需要避免。有没有办法在确保调用 upload_to 的同时将已经存在的文件添加到 FileField 中?

4

2 回答 2

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'))
于 2009-11-27T14:22:41.393 回答
0

我想说最简单的方法是编写自己的字段或存储。

于 2009-08-19T14:11:38.283 回答