sorl缩略图ImageField动态上传到路径



我知道在django ImageFields和FileFields中有一种动态上传路径的方法,那就是在字段中传递一个upload_to=可调用,但有没有一种方法可以用sorl缩略图ImageField实现这一点?

这是我的模型.py,我得到了一个未定义的上传路径!

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

请参阅此相关SO问题。

Sorl缩略图对upload_to没有任何特殊作用。它只是通过继承Django的FileField来处理传递的参数,所以任何使用标准FileFieldImageField的东西都可以使用sorl缩略图的ImageField

我认为你的问题是在模型上定义方法。我见过或自己做过的每一个实现都有一个模型之外的方法。Django会自动将实例传递给方法,所以这就是访问模型上数据的方式,而不是通过self

我将此回调与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)

最新更新