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, то создается модель, но не файл.
Есть ли способ создать/наполнить/изменить файл перед его сохранением?