自定义ImageField的保存路径

时间:2010-09-07 13:39:48

标签: django

我想自定义用于保存图像以备记录的文件夹...目前,我有:

original_image = models.ImageField(upload_to='photos')

但我想要的是将图像保存到photos/<vehicle's_stock_number>/ ...如何将库存号添加到上传路径的末尾?

1 个答案:

答案 0 :(得分:1)

根据FileField.upload_to的文档:

  

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

     

instance:定义FileField的模型实例。更具体地说,这是附加当前文件的特定实例。在大多数情况下,此对象尚未保存到数据库中,因此如果它使用默认的AutoField,则它的主键字段可能还没有值。

     

filename:最初提供给文件的文件名。在确定最终目的地路径时,可能会或可能不会考虑这一点。

因此,如果您的模型具有stock_number属性,则可以使用以下内容:

def get_path(instance, filename):
  return 'photos/%s/%s' % (instance.stock_number, filename)