我正在执行数据迁移,将图像从一个模型内部移动到他们自己的模型。
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()
问题是,我们有一些图像与新图像不在同一个地方。当副本发生时,它会将旧的ImageField中的url转换为适用于新的URL的URL。例如:
old.url
出现在path/to/something/awesome.jpg
i.url
变为new/media/root/awesome.jpg
如何保存ImageField,而不会在保存时发生任何事情?如果可能的话,我想避免制作所有文件的新副本。
答案 0 :(得分:0)
在迁移期间禁用upload_to
。复制实例时手动设置upload_to
。
迁移后,请将其重新启用。