Django:输入图像文件的低位文件名

Hel*_*nar 3 django django-models django-admin

我有一个模特:

class Foo(models.Model):
    poster = models.ImageField(u"Poster", upload_to='img')
Run Code Online (Sandbox Code Playgroud)

我正在使用管理员上传海报并保存Foo对象.我现在需要找到一种在保存之前将文件名小写的方法.例如,POSTER.png或Poster.png或poster.PNG应小写为poster.png.

实现这一目标最简单的方法是什么?

Dom*_*ger 6

FileField.upload_to 根据文档中的这个评论,也可以是可调用的:

这也可以是可调用的,例如函数,它将被调用以获得上载路径,包括文件名.这个callable必须能够接受两个参数,并返回一个Unix风格的路径(带有正斜杠)以传递给存储系统.将传递的两个参数是:

既然ImageField继承了它的所有属性和方法FileField,我想你可以使用:

def update_filename(instance, filename):
    path_you_want_to_upload_to = "img"
    return os.path.join(path_you_want_to_upload_to, filename.lower())

class Foo(models.Model):
    poster = models.ImageField(u"Poster", upload_to=update_filename)
Run Code Online (Sandbox Code Playgroud)