Как я могу скопировать изображение в облачном виде? - PullRequest
0 голосов
/ 03 февраля 2020

Я использую cloudinary с Django, и мне нужно продублировать экземпляр модели, который также содержит 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()

Проблема заключается в том, что оба экземпляра теперь присвоили одно и то же изображение, поэтому, если я удаляю одно, другое удаляется. Как я могу правильно продублировать существующее изображение в облачном виде?

1 Ответ

0 голосов
/ 03 февраля 2020

Я смог понять это. Загрузка изображения с параметром 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...