【发布时间】:2011-08-06 18:29:56
【问题描述】:
我现在尝试了几个小时来使用 South 进行最愚蠢的迁移,但不知何故,我失败得很惨。我正在尝试迁移到 Sorl-Thumbnail。
这是我的过渡模型:
class Deal(models.Model):
image = ImageWithThumbsField(upload_to='deal_images',null=True,blank=True,sizes=(200,150),))
new_image = ImageField(upload_to='new_deal_images',default='deal_images/thumb_deal_noimg.gif')
到目前为止,我的前向迁移是这样的:
def forwards(self, orm):
for deal in orm.Deal.objects.all():
try:
image_name = deal.image.name.split('/')[1]
file_ = File(deal.image.open()) # I've also tried the method read()
deal.new_image.save('new_deal_images/'+image_name,file_,save=False)
except:
deal.new_image = None # For the default image kick in
deal.save()
这是此代码的最新版本。其他的,大部分都没有正确的把图片文件放到新目录下。
帮助... :)
时光荏苒……
好吧...经过几次测试,我得到了这个代码:
def forwards(self, orm):
for deal in orm.Deal.objects.all():
file_content = ContentFile(deal.image.read())
deal.new_image.save(deal.image.name,file_content) *
deal.save()
图像被复制并保存在新列 (new_image) 中,但问题是所有文件都保存在 MEDIA_ROOT 根目录中,而不是所需的子目录 ('new_deal_images') 中。我在 * 行尝试了这个,但仍然没有运气:
deal.new_image.save('new_ideal_images/'+deal.image.name,file_content)
仍然不工作......
请帮助... :)
时光荏苒……
好的...我认为South有一些严重的问题:
这段代码在 Django Shell 中完美运行,将所有文件复制到正确的位置:
15 for deal in Deal.objects.all():
16 image_path = deal.image.path·
17 file_ = File(open(image_path,'rb'))
18 deal.new_image.save(deal.image.name,file_)
19 deal.save()
但是 Migration 文件中的这段代码并没有,转储 MEDIA_ROOT 根目录中的所有文件,而不将其移动到正确的子目录:
15 for deal in orm.Deal.objects.all():
16 image_path = deal.image.path·
17 file_ = File(open(image_path,'rb'))
18 deal.new_image.save(deal.image.name,file_)
19 deal.save()
【问题讨论】:
标签: django django-south