Как подключить функцию внутри ImageField
Я пытаюсь загрузить изображения из админки Django. Файлы большие, большинство из них более 5 МБ, Я хочу изменить их масштаб, чтобы размер был меньше 1 МБ перед загрузкой.
У меня есть функция, которая может изменить масштаб изображения и работает нормально, но я не уверен, как подключить эту функцию к ImageField в Django models.
def scaled_image(input_image_path, output_image_path, width=600, height=None):
image = Image.open(input_image_path)
w, h = image.size
if width and height:
max_size = (width, height)
elif width:
max_size = (width, h)
elif height:
max_size = (w, height)
else:
# No width or height specified
sys.exit("Width or height required!")
image.thumbnail(max_size, Image.ANTIALIAS)
image.save(output_image_path)
scaled_image = Image.open(output_image_path)
return scaled_image
Теперь как мне изменить ImageField, чтобы оно работало
doucment_image = models.ImageField(upload_to='sellerinfo', null=True, blank=True)
Помощь будет очень признательна. Спасибо
Вы можете попробовать переопределить функцию сохранения вашей Модели :
class Model(models.Model):
doucment_image = models.ImageField(upload_to='sellerinfo', null=True, blank=True)
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
# Call scaled_image if doucment_image is provided
if self.doucment_image:
self.doucment_image = scaled_image(self.doucment_image.path, self.doucment_image.path)