我创建了这个函数,将图像从 django-model 复制到另一个 django-model。图像必须冗余保存:
def __copy_file__(from_object,to_object,field):
attr = field.attname
try:
newpath = getattr(from_object,attr).path
dot_at = newpath.rfind(".")
while os.path.exists(newpath):
newpath = newpath[:dot_at] + "_" + newpath[dot_at:]
shutil.copyfile(getattr(from_object,attr).path, newpath)
getattr(to_object,attr).save(newpath, File(open(getattr(from_object,attr).path)))
return True
except ValueError:
return False
但是这个函数创建了某种无效的文件..我记得有一天它有效,但我今天测试了它,它不再工作了..
编辑:现在我知道该函数会生成两个图像。一种有效,一种无效。 shutdown.copyfile (etc) 行生成工作文件,并在赋值 getattr(to_object,attr).save (etc) 中再次保存图像。所以这就是问题所在。它应该只是分配,而不是再次复制..
有人可以帮我吗? :)
最佳答案
我这样做的方式,假设from_model
和to_model
是带有图像ImageField的模型实例:
def copy_image(from_model, to_model):
to_model.image.save(from_model.image.url.split('/')[-1],from_model.image.file,save=True)
关于 python , Django : copy image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4008734/