ImageSpecField не создается повторно при изменении источника

Я использую 3.0.3 django-imagekit. У меня есть следующие настройки на модели:

render_image = models.ImageField(upload_to='spec/', null=True, blank=True)
render_thumbnail = ImageSpecField([ResizeToFill(220, 220)],
                                  source='render_image',
                                  format='JPEG',
                                  options={'quality': 90})

Что отлично работает для начала: когда я загружаю изображение изначально, миниатюра создается нормально. Моя проблема в том, что я программно меняю исходное изображение. Я хотел бы повторно создать миниатюру на основе новой, но не понимаю, как это сделать. Я меняю исходное изображение этой строкой:

model.render_image = image_rel_path # that is, 'model/uuid.png'

Это отлично работает, и я могу получить доступ к новому изображению. Я даже могу использовать тег шаблона эскиза imagekit для создания обновленного эскиза с измененным размером. Я бы согласился, но мне нужен только URL-адрес изображения, а не полный тег изображения, поскольку он должен быть фоновым изображением (разработчики imagekit: если нет способа просто получить URL-адрес в теге шаблона, пожалуйста обратите внимание, что создание html нарушает принцип наименьшей ответственности).

Я не хочу копаться в кишках imagekit, я просто хочу, чтобы миниатюра была правильно сгенерирована на сигнале «исходный файл изменен», изменив способ обновления исходного файла, или я хотел бы иметь возможность вызовите что-то вроде model.render_thumbnail.generate(source=model.render_image).


person jstaab    schedule 31.05.2014    source источник


Ответы (1)


Вот так. В то время я избегал этого, но мне снова пришлось решать проблему, и я обнаружил метод generate в файле ImageSpecField. Все, что вам нужно сделать, это model.image_thumbnail.generate(). Если вы получаете сообщение об ошибке MissingSource: The spec '<imagekit.specs.DynamicSpec object at 0x7fb8a93ef450>' has no source file associated with it., источник, с которым был связан ImageSpecField, не имеет связанного файла.

person jstaab    schedule 20.11.2014