我如何在云端复制图像?

问题描述 投票:0回答:1

我在Django中使用cloudinary,我需要复制一个模型实例,其中也包含一个CloudinaryField。我知道如何在Django中复制模型实例,但是我不知道如何复制图像。

这是我的模特:

class CustomImage(models.Model):
    image = CloudinaryField("image", null=True, blank=True)
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)

这是我对该模型实例的重复代码:

image = CustomImage.objects.get(id=1)
image.pk = None
image.save()

问题是,两个实例现在都分配了相同的图像,因此,如果我删除一个,则另一个实例也将被删除。如何正确复制cloudinary中的现有图像?

python django cloudinary
1个回答
0
投票

我能够弄清楚。在选项overwrite设置为False的情况下上传图像很容易。另外,我们需要创建一个新的CloudinaryResource并将其分配给image实例的CustomImage字段。

import cloudinary
from cloudinary import CloudinaryResource

image = CustomImage.objects.get(id=1)
image.pk = None

# cloudinary image duplication
cloudinary_resource = image.image
cloudinary_url = cloudinary_resource.url
response = cloudinary.uploader.upload(
    cloudinary_url, options={"overwrite": False}
)
public_url = response["public_id"]
resource_type = response["resource_type"]
duplicated_image = CloudinaryResource(
    public_id=public_url, resource_type=resource_type
)
image.image = duplicated_image
image.save()
© www.soinside.com 2019 - 2024. All rights reserved.