Python 复制到新模型实例时在django ImageField中保留url

Python 复制到新模型实例时在django ImageField中保留url,python,django,migration,django-south,imagefield,Python,Django,Migration,Django South,Imagefield,我正在执行数据迁移,将图像从一个模型内部移动到它们自己的模型中 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, n

我正在执行数据迁移,将图像从一个模型内部移动到它们自己的模型中

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\u to
方法只返回文件的唯一名称

当我迁移它们时(在南方数据迁移中):

问题是,我们有一些图像与新图像不在同一位置。当复制发生时,它将旧ImageField中的url转换为适用于新字段的url。例如:

old.url
出现在
path/to/something/awesome.jpg

i.url
变成
new/media/root/awesome.jpg


如何保存ImageField而在保存时不发生任何变化?如果可能的话,我希望不必制作所有文件的新副本。

在迁移期间禁用
上传到
。复制实例时,手动将
上传设置为

迁移后,请重新启用它

i = MyImage(
    my_events_image = old.my_events_image,
    original_image = old.original_image,
)
i.save()