Появляется ошибка, когда пытаюсь переопределить метод 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