@tosha4encko

Как изменить размер файла перед сохранением в моделе?

Мой код:
class ...(models.Model):
 ...
	def save(self, *args, **kwargs):
		super(Photo, self).save(*args, **kwargs)

		filepath = self.image.path

		width = self.image.width
		height = self.image.height

		if height < width:
                	new_width = int(round(297*90/25))
                	new_height = int(round(210*90/25))
                else:
                	new_height = int(round(297*90/25))
                	new_width = int(round(210*90/25))

                image = Image.open(filepath)
		image = image.resize((new_width,new_height), Image.ANTIALIAS)
		image.save(filepath, format='JPEG', quality=90)


В целом работает, но хотелось бы изменять размер и формат перед сохранением, а не после.

Пробовал переопределить метод save_model в админке. Там файл имеет тип TemporaryUploadFile, как изменить его размер и тип нагуглить не получилось.
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ответы на вопрос 1
alternativshik
@alternativshik
Если действие частое, я бы посмотрел в сторону полей для моделей от django-imagemagick и не городил велосипедов
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы