将Cloudinary图像上载链接到Django模型字段

时间:2015-10-07 22:03:01

标签: python django python-2.7 image-uploading cloudinary

我已经阅读了Cloudinary Django docs以及许多StackOverflow问题,而且我仍然在努力解决这个基本问题。我想将图像作为数据迁移的一部分上传到Cloudinary模型字段(类CloudinaryField

我的模型以下列方式定义:

# model definition
from cloudinary.models import CloudinaryField
from django.contrib.gis.db import models

class UserProfile(models.Model):
    name = models.CharField(max_length=200)
    logo = CloudinaryField(blank=True, null=True)

此模型运行正常,我可以通过管理员上传图像而不会出现问题,并在我的模板中访问它。

我想编写一个数据迁移,以便我可以将许多图像上传到此模型。我的无功能迁移的结构如下:

# migration file to upload logos
import cloudinary

# get all user instances
users = UserProfile.objects.all()

# loop through users, and update logo
for user in users:
    user.logo = cloudinary.uploader.upload("https://url/to/logo/logo.png")
    user.save()

我知道如果我使用cloudinary.uploader.upload("image.png"),我会收到这样的内容:

{u'secure_url': u'https://res.cloudinary.com/mysite/image/upload/111/111.png', u'public_id': 111', u'format': u'png', u'url': u'http://res.cloudinary.com/mysite/image/upload/v1444253137/111.png', u'created_at': u'2015-10-07T21:25:37Z', u'tags': [], u'bytes': 7974, u'height': 35, u'width': 290, u'version': 1444253137, u'etag': u'aaa', u'original_filename': u'logo', u'signature': u'111', u'type': u'upload', u'resource_type': u'image'}

我无法弄清楚是否可以使用Cloudinary将上传的文件与模型字段相关联。所有文档(和示例代码)都没有显示如何将上传的响应与模型字段相关联。有一些使用网络表单的示例,但如果可能,我更愿意避免这种情况。

2 个答案:

答案 0 :(得分:4)

尝试使用以下内容:

user.logo = cloudinary.uploader.upload_resource("https://url/to/logo/logo.png")

这应该可以解决问题。

答案 1 :(得分:0)

我联系了Cloudinary支持,与此问题相关联,他们的回答如下:

  

您是否仔细阅读了文档?特别是Python   模型主题在这里讨论:   http://cloudinary.com/documentation/django_image_upload#django_forms_and_models

我的结论是Cloudinary不支持我想要的功能,这让我感到惊讶,因为它看起来非常基本。

所以,我想我可以创建一个表单,伪造一个带有数据的请求,这样我就可以上传一个文件来将它与模型联系起来。这看起来很疯狂,但我看不出替代方案。