Появляется ошибка из-за переопределения метода 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.thumbnail(cover_size)
preview_cover.save(self.cover.path)
super(News, self).save(*args, **kwargs)
Еще я пробовал это делать с помощью сигнала, но тогда выдавало такую ошибку при сохранении, в принципе ту же самую ошибку, что написал выше. Вот мой сигнал, но скорее всего он написан неправильно
def image_post_save(sender, instance, *args, **kwargs):
if instance.banners:
preview_cover = Image.open(instance.cover.path)
cover_size = (200,350)
preview_cover.thumbnail(cover_size)
preview_cover.save(instance.cover.path)
post_save.connect(image_post_save, sender=News)
Должно это все по итогу работать примерно так: Пользователь загружает изображение в админке, оно загружается нормально и вместе с этим автоматически, не заменяя загруженное изображение, загружается второй файл(изображение с уменьшенным разрешением). Пользователь загружает картинку с разрешением 1000х600(или больше), а код меняет его на 250х300. Возможно для этого нужен сигнал, но я не понимаю, как правильно его написать. Возможно также для этого придется делать поле с изображением ArrayField