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

时间:2010-08-11 07:54:56

标签: django django-admin django-models

我有一个模特:

class Foo(models.Model):
    poster = models.ImageField(u"Poster", upload_to='img')

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

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

1 个答案:

答案 0 :(得分:6)

根据文档中的此评论,

FileField.upload_to也可以是可调用的:

  

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

由于ImageFieldFileField继承了所有属性和方法,我认为你可以使用:

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)