我知道在django ImageFields和FileFields中有一种动态上传路径的方法,即在字段中传递upload_to = callable,但是有没有办法用sorl-thumbnail ImageField来实现呢?
这是我的model.py,我没有定义upload_path!
class Brand(models.Model):
title = models.CharField(max_length=255, null=True, blank=True)
photo = sorl.thumbnail.ImageField(upload_to=upload_path)
external = models.BooleanField(_('External Brand? ("Key Account")?'))
def upload_path(self):
return u'%s' % self.title
答案 0 :(得分:2)
Sorl-thumbnail与upload_to
没有任何特殊之处。它只是通过继承Django的FileField
来处理传递的参数,所以任何适用于标准FileField
或ImageField
的东西都可以与sorl-thumbnail的ImageField
一起使用。
我认为您的问题是在模型上定义方法。我自己见过或完成的每个实现都有方法在模型之外。 Django自动将实例传递给方法,因此您可以访问模型上的数据 - 而不是通过self
。
答案 1 :(得分:1)
我将这个回调用于sorl:
def get_image_path(instance, filename):
"""
puts image in MEDIA_ROOT/photos/instance_id/file
"""
return os.path.join('photos', str(instance.id), filename)
class Brand(models.Model):
...
photo = sorl.thumbnail.ImageField(upload_to=get_image_path)