sorl-thumbnail ImageField动态upload_to路径

时间:2012-02-08 17:04:41

标签: django django-models sorl-thumbnail

我知道在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

2 个答案:

答案 0 :(得分:2)

请参阅this related SO question

Sorl-thumbnail与upload_to没有任何特殊之处。它只是通过继承Django的FileField来处理传递的参数,所以任何适用于标准FileFieldImageField的东西都可以与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)