【发布时间】:2014-08-08 19:57:32
【问题描述】:
我正在执行数据迁移,将图像从一个模型内部移到它们自己的模型中。
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 转换为适用于新 ImageField 的 url。例如:
old.url 出现在path/to/something/awesome.jpg
i.url 变为 new/media/root/awesome.jpg
如何在保存时保存 ImageField 而不会发生任何事情?如果可能的话,我想避免制作所有文件的新副本。
【问题讨论】:
标签: python django migration django-south imagefield