Появляется ошибка, когда пытаюсь переопределить метод save у модели Django

Пытаюсь переопределить метод save чтобы сделать так, чтобы при загрузке изображения в админке изображение меняло свое разрешение сторон.. Но появляется такая ошибка: raise ValueError("The '%s' attribute has no file associated with it." % self.field.name) или же ValueError at /admin/news/news/ The 'cover' attribute has no file associated with it. Вот модель:

class News(models.Model):
    cover = models.ImageField(upload_to="media/news", blank=True)
    banners = models.BooleanField(default=False)

    def save(self, *args, **kwargs):
        if self.banners:
            preview_cover = Image.open(self.cover)
            cover_size = (200, 350)
            preview_cover_updated = preview_cover.thumbnail(cover_size)
            self.cover = preview_cover_updated
        super(News, self).save(*args, **kwargs)

Еще я пробовал это делать с помощью сигнала, но тогда выдавало такую ошибку при сохранении, в принципе ту же самую ошибку ValueError at /admin/news/news/add/ The 'cover' attribute has no file associated with it. Вот мой сигнал, но скорее всего он написан неправильно

def image_post_save(sender, instance, *args, **kwargs):
    if instance.banners:
        preview_cover = Image.open(instance.cover)
        cover_size = (200,350)
        preview_cover.thumbnail(cover_size).save()

post_save.connect(image_post_save, sender=News)

Должно это все по итогу работать примерно так: Пользователь загружает изображение в админке, оно загружается нормально и вместе с этим автоматически, не заменяя загруженное изображение, загружается второй файл(изображение с уменьшенным разрешением). Пользователь загружает картинку с разрешением 1000х600(или больше), а код меняет его на 250х300. Возможно для этого нужен сигнал, но я не понимаю, как правильно его написать. Возможно также для этого придется делать поле с изображением ArrayField

Вернуться на верх