一尘不染

如何在Django中更改上传文件的文件名?

django

可以在Django中更改上传文件的文件名吗?我搜索了,但找不到任何答案。

我的要求是,无论何时上传文件,其文件名都应以以下格式更改。

format = userid + transaction_uuid + file_extension

非常感谢你…


阅读 748

收藏
2020-03-29

共1个答案

一尘不染

你如何上传文件?我以为FileField

FileField.upload_to的文档说,该upload_to字段

也可以是可调用的,例如函数,将被调用以获得上载路径,包括文件名。该可调用对象必须能够接受两个参数,并返回要传递给存储系统的Unix样式的路径(带有正斜杠)。将传递的两个参数是:

instance“:FileField定义的模型实例。更具体地说,这是附加当前文件的特定实例。

filename“:最初提供给文件的文件名。确定最终目标路径时,可以考虑也可以不考虑。

因此,看起来你只需要创建一个函数来进行名称处理并返回路径即可。

def update_filename(instance, filename):
    path = "upload/path/"
    format = instance.userid + instance.transaction_uuid + instance.file_extension
    return os.path.join(path, format)
2020-03-29