gpt4 book ai didi

python - 在 Django 中保存文件之前更改文件名

转载 作者:太空狗 更新时间:2023-10-30 02:06:21 25 4
gpt4 key购买 nike

在 django 管理中(在 models.py 中)上传时,我有下一个代码来重命名我的文件

def get_file_path(instance, filename):
ext = filename.split('.')[-1]
filename = "%s.%s" % (uuid.uuid4(), ext)
return os.path.join('directory/', filename)

class Archivo(models.Model):
archivo = models.FileField(upload_to = get_file_path)

这对我有用,但我想动态传递目录,如下所示:

def get_file_path(instance, filename, directory_string_var):
ext = filename.split('.')[-1]
filename = "%s.%s" % (uuid.uuid4(), ext)
return os.path.join(directory_string_var, filename)

如果我这样做,我无法将目录参数(变量)传递给“archivo”字段的 upload_to 选项中的方法。

最佳答案

如果您的目标只是防止文件填满给定目录(这是一个问题,因为根据文件系统,对包含太多条目的目录进行的某些操作可能代价高昂),upload_to 可以包含 strftime 格式,这将替换为上传的日期/时间。

archivo = models.FileField(upload_to = 'path/%Y/%M/%D/')

您可以将参数存储在实例对象中:

def get_file_path(instance, filename):
ext = filename.split('.')[-1]
filename = "%s.%s" % (uuid.uuid4(), ext)
return os.path.join(instance.directory_string_var, filename)

class Archivo(models.Model):
archivo = models.FileField(upload_to = get_file_path)
directory_string_var = 'default_directory_string_var'

关于python - 在 Django 中保存文件之前更改文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4110581/

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