如何在 cloudinary 中复制图像?
How can I duplicate an image in cloudinary?
我在 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 中正确复制现有图像?
我想通了。将选项 overwrite
设置为 False
上传图像就可以了。另外,我们需要新建一个CloudinaryResource
,赋值给CustomImage
实例的image
字段。
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()
我在 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 中正确复制现有图像?
我想通了。将选项 overwrite
设置为 False
上传图像就可以了。另外,我们需要新建一个CloudinaryResource
,赋值给CustomImage
实例的image
字段。
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()