Я использую 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)
.