Linking a Cloudinary image upload to a Django model field
我已经通读了多云的django文档和许多stackoverflow问题,我仍然在努力解决这个基本问题。我想上传一个图像作为数据迁移到云模型字段(类
我的模型定义如下:
1 2 3 4 5 6 7 | # 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) |
这个模型可以很好地工作,我可以通过管理员上传一个图像,而不会有任何问题,并且可以在我的模板中访问它。
我想写一个数据迁移,这样我可以上传许多图片到这个模型。我的非功能迁移结构如下:
1 2 3 4 5 6 7 8 9 10 | # 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() |
我知道如果我使用
1 | {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,我无法确定是否可以将上传的文件与模型字段关联。所有文档(和示例代码)都不显示如何将上载的响应与模型字段关联。有一些使用webform的例子,但如果可能的话,我宁愿避免这种情况。
尝试使用以下内容:
1 | user.logo = cloudinary.uploader.upload_resource("https://url/to/logo/logo.png") |
这样就可以了。
我联系了Cloudinary支持部门,与此问题相关,他们的答案如下:
Did you read thoroughly the documentation? Specifically the Python
models topic is discussed here:
http://cloudinary.com/documentation/django_image_upload#django_forms_and_models
我的结论是Cloudinary不支持我想要的功能,这让我吃惊,因为它看起来非常基本。
所以,我想我可以制作一个表单,用其中的数据伪造一个请求,这样我就可以上传一个文件,将它与模型关联起来。这看起来很疯狂,但我看不出还有什么选择。