【问题标题】:Preserve url in django ImageField when copying to a new model instance复制到新模型实例时在 django ImageField 中保留 url
【发布时间】: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


    【解决方案1】:

    在迁移期间禁用 upload_to。复制实例时手动设置upload_to

    迁移后,重新启用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      • 1970-01-01
      • 2014-11-08
      • 2015-02-27
      相关资源
      最近更新 更多