Django создает файл программно при сохранении

Цель состоит в том, чтобы пользователь создал экземпляр модели, в котором он заполнит поле URL, а при сохранении получит URL и сохранит его в файл.source

class ComicImage(UUIDModel):
    src = models.URLField('Comic URL', max_length=512, blank=True)
    img = models.FileField('Images', null=True, blank=True, upload_to='comics')

    def save(self, *args, **kwargs):
        img_data = BytesIO(requests.get(self.src).content)
        self.img.save(f'{self.hash}-i.webp', content=img_data)

        super().save(*args, **kwargs)

Но я продолжаю получать ошибку

Ошибка в значении: Атрибут 'img' не имеет связанного с ним файла.

Похоже, что он не присваивает файл полю. Точнее, не назначает, пока не будет сохранена модель.

Альтернативно:

Я также пробовал

self.img.save(f'{self.hash}-i.webp', content=img_data, save=True)

Но он застревает в цикле сохранения навсегда. Если я устанавливаю save=False, то создается модель, но не файл.

Есть ли способ создать/наполнить/изменить файл перед его сохранением?

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