sorl-thumbnail Динамическая загрузка ImageField в путь - PullRequest
2 голосов
/ 08 февраля 2012

Я знаю, что есть способ динамического пути загрузки в django ImageFields и FileFields, который должен передавать в поле upload_to = callable, но есть ли способ добиться этого с помощью sorf-thumbnail ImageField?

Это мой model.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

Ответы [ 2 ]

2 голосов
/ 08 февраля 2012

См. этот связанный вопрос SO .

Sorl-thumbnail не делает ничего особенного с upload_to. Он просто препятствует обработке переданных аргументов через наследование от FileField Джанго, поэтому все, что работает со стандартными FileField или ImageField, будет работать и с ImageField sorl-thumbnail.

Я думаю, что ваша проблема заключается в определении метода на модели. Каждая реализация, которую я когда-либо видел или делал сам, имеет метод, находящийся вне модели. Django автоматически передает экземпляр в метод, так что вы получаете доступ к данным модели, а не через self.

1 голос
/ 09 февраля 2012

Я использую этот обратный вызов с 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...