2

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

2 回答 2

2

请参阅这个相关的 SO 问题

Sorl-thumbnail 对upload_to. 它只是通过从 Django 继承来处理传递的参数FileField,因此任何适用于标准FileFieldImageField将适用于 sorl-thumbnail 的东西ImageField

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

于 2012-02-08T17:28:02.467 回答
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)
于 2012-02-08T22:34:36.160 回答