Я пытаюсь изменить размер изображения при сохранении экземпляра моей модели.
class Picture(models.Model):
image_file = models.ImageField(upload_to="pictures")
thumb_file = models.ImageField(upload_to="pictures", editable=False)
def save(self, force_insert=False, force_update=False):
image_object = Image.open(self.image_file.path)
#[...] nothing yet
super(Picture, self).save(force_insert, force_update)
Проблема в том, что self.image_file.path не существует до сохранения модели. Он возвращает правильный путь, но изображение еще не там. Поскольку изображения нет, я не могу открыть его в PIL для изменения размера.
Я хочу сохранить миниатюру в thumb_file (еще один ImageField), поэтому мне нужно выполнить обработку перед сохранением модели.
Есть ли хороший способ открыть файл (возможно, получить объект изображения tmp в памяти) или мне нужно сначала сохранить всю модель, изменить ее размер, а затем сохранить снова?