Я выполняю миграцию данных, перемещая изображения из одной модели в свою собственную модель.
class OldCrappyModel(models.Model):
...
original_image = models.ImageField(upload_to=upload_original_image, null=True, blank=True)
my_events_image = models.ImageField(upload_to=upload_my_promotions_image, null=True, blank=True)
...
class MyImage(models.Model):
original_image = models.ImageField(upload_to=upload_original_image, null=True, blank=True)
my_events_image = models.ImageField(upload_to=upload_my_promotions_image, null=True, blank=True)
...
Методы upload_to
просто возвращают уникальное имя файла.
Когда я иду их переносить (в южной миграции данных):
i = MyImage(
my_events_image = old.my_events_image,
original_image = old.original_image,
)
i.save()
Проблема в том, что у нас есть некоторые изображения, которые находятся не в том же месте, что и новые. Когда происходит копирование, он переводит URL-адрес из старого ImageField в URL-адрес, который будет работать для нового. Например:
old.url
выходит к path/to/something/awesome.jpg
i.url
становится new/media/root/awesome.jpg
Как я могу сохранить ImageField, чтобы с ним ничего не происходило при его сохранении? Я хотел бы избежать необходимости делать новые копии всех файлов, если это возможно.