gpt4 book ai didi

python - Django filestorage 保存方法根据文件名创建路径

转载 作者:太空宇宙 更新时间:2023-11-04 05:57:16 26 4
gpt4 key购买 nike

我正在尝试使用 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)

我使用的文件存储方法外包在我的 storage.py 中,我将其导入到我的 models.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/files/foo/foo

如果它的名字是bar.txt,它看起来像下面这样:

cwd/files/bar.txt/bar.txt

我不希望 django 根据文件名创建子目录。你们能帮帮我吗?

最佳答案

我很确定您必须将保存函数从“save”重命名为“_save”。

在 Super Call 中,您使用了 ._save,它与上面的保存函数不同。

您可以阅读很多关于 Super here 的内容

关于python - Django filestorage 保存方法根据文件名创建路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27042342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com