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 に答える