Django/Python:在保存文件之前更改上传的文件名

use*_*003 4 python django file-upload

我正在创建一个用户可以上传图像的网站.我需要确保每个文件名都有一个唯一的名称,以防止文件相互覆盖.我将生成唯一的名称.但是如何在保存文件之前更改文件名?我发现有一些方法可以更改保存到的文件夹,但这并不是我所追求的.

class saved_photos(models.Model):
    name = models.CharField(max_length=20) 
    photo = models.ImageField(upload_to='images/things/', blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

在我的代码中我做:

new_name = get_unique_name()
p = saved_photos(name = new_name, photo = request.FILES)
p.save()
Run Code Online (Sandbox Code Playgroud)

我需要的是保存文件的实际名称是new_name.

DrT*_*rsa 7

你需要定义upload_to功能.

  • 谢谢,这很有效.在我的模型中,我添加了字段"photo = models.ImageField(upload_to = get_path_and_name)".然后在models.py中我还定义了一个函数:def get_path_and_name(instance,filename):new_name ='blabla.jpg'return new_name (3认同)