Как подключить функцию внутри 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)
Вернуться на верх