我有一个模特:
class Foo(models.Model):
poster = models.ImageField(u"Poster", upload_to='img')
我正在使用管理员上传海报并保存Foo
个对象。我现在需要找到一种在保存之前将文件名小写的方法。例如,POSTER.png或Poster.png或poster.PNG应小写为poster.png。
实现这一目标的最简单方法是什么?
答案 0 :(得分: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)