python , Django : copy image

标签 python django image copy

我创建了这个函数,将图像从 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_modelto_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/

相关文章:

django - 为什么会出现此错误, docker 操作错误(Django项目)?

django - 使用Django表单显示和编辑?

javascript - 根据 "alt"标签在输入时过滤图像

c# - UWP - 缩放图像(捏缩放和双击),翻转 View

django - django 可以使用外部数据库吗?

java - 什么是欧氏距离平方或距离平方和?

python - 为什么从源代码构建 Boost 会改变 CMake 找到的 Python 版本?

python - re.fullmatch() 可以消除正则表达式中对字符串 anchor 的需要吗

python - 在解决所有重定向之后但在使用 urllib2 下载页面之前,如何拦截请求?

python - 如何在 Django 中按日期范围过滤记录?