2

Djangoでファイルストレージを操作しようとしています。すべてが正常に機能していますが、私の保存方法にあると思います。私はモデルを持っていますFileField

download_url = models.FileField(verbose_name = 'Konfig', upload_to = file_path, storage = OverwriteStorage())

私のモデルのこのメソッドでは、file_path

def file_path(instance, filename):
        path = os.getcwd() + '/files'
        return os.path.join(path, str(instance.download_url), filename)

そして、私が使用するファイルストレージの方法は、models.py にインポートするstorage.pyで外部委託されています。

from django.core.files.storage import FileSystemStorage

class OverwriteStorage(FileSystemStorage):

    def _save(self, name, content):
        if self.exists(name):
            self.delete(name)
        return super(OverwriteStorage, self)._save(name, content)

    def get_available_name(self, name):
        return name

django から管理インターフェイスで新しいファイルを作成すると、ファイルが正常にアップロードされ、正しいファイルパスでデータベース エントリが作成されますが、正しいパスの作成に失敗します。ファイル名がfooの場合、パスは次のようになります。

cwd/ファイル/foo/foo

その名前がbar.txtの場合、次のようになります。

cwd/files/bar.txt/bar.txt

ファイル名に基づいてdjangoにサブディレクトリを作成させたくありません。手伝ってくれませんか?

4

1 に答える 1