Почему shutil не копирует образ django

Я хочу скопировать изображение из одного экземпляра модели Django в другой, копируя фактический файл с помощью shutil. Я знаю, что state.image = self.image достаточно для доступа к изображению, но мне нужна физическая копия файла с новым именем

У меня такой код:

original = os.path.join(settings.MEDIA_ROOT, self.image.name)

target = os.path.join(settings.MEDIA_ROOT, self.image.path.split('.')[1] + '_' + str(state.pk) + '.png')

shutil.copyfile(original, target)

content = urllib.urlretrieve(target)

state.image.save(self.image.path.split('/')[-1], File(open(content[0])), save=True)
state.save()

Выдает такую ошибку:

celery_1        | File "/app/state/models/bills/change_coat.py", line 79, in do_bill
celery_1        |     shutil.copyfile(original, target)
celery_1        |   File "/usr/local/lib/python3.9/shutil.py", line 264, in copyfile
celery_1        |     with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst:
celery_1        | FileNotFoundError: [Errno 2] No such file or directory: '/app/media/img/state_avatars/file.jpg'

Что не так с кодом?

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