将 Cloudinary 对象保存到 Django 模型

Saving a Cloudinary object to a Django Model

我有一个模型:

from cloudinary.models import CloudinaryField

class Image(models.Model):
    image = CloudinaryField('image')

还有一个我从 Cloudinary 收到的对象。这是我上传图片后Cloudinary给我的,我把它传回我的服务器:

{'etag': ['***'], 'version': ['***'], 'public_id': ['***'], 'type': ['upload'], 'signature': ['***'], 'created_at': ['2017-07-28T15:54:17Z'], 'secure_url': ['https://res.cloudinary.com/***/***.png'], 'height': ['353'], 'format': ['png'], 'resource_type': ['image'], 'url': ['http://res.cloudinary.com/***/image/upload/***/***.png'], 'width': ['684'], 'bytes': ['133509']}

我似乎无法将其保存到我的模型中。我试过直接保存它并通过 Cloudinary 文档中的 CloudinaryJsFileField 形式放入它。两者似乎都不起作用。表格哀叹 "No File Was Selected" 和 model.create() 努力抱怨缺少 属性。

这是我正在使用的表格:

class PhotoDirectForm(ModelForm):

    class Meta:
        model = Image
        fields = ['image']

我已经尝试过使用和不使用 CloudinaryJsFileField,但无论哪种方式我都得到相同的错误:

<tr><th><label for="id_image">Image:</label></th><td><ul class="errorlist"><li>No file selected!</li></ul><input type="file" name="image" required id="id_image" /></td></tr>

显然它需要一个文件,但这不是我上传图片后 Cloudinary 给我的!

有谁知道如何将 Cloudinary 对象保存到 Django 数据库中?

您是否检查了 Photo album 示例项目?

那里的流量是 -

views.py -

form = PhotoForm(request.POST, request.FILES)
...
form.save()

forms.py -

class PhotoForm(ModelForm):
class Meta:
    model = Photo
    fields = '__all__'

models.py -

class Photo(models.Model):
## Misc Django Fields
create_time = models.DateTimeField(auto_now_add=True)
title = models.CharField("Title (optional)", max_length=200, blank=True)

## Points to a Cloudinary image
image = CloudinaryField('image')

这应该将图像保存在 Cloudinary 和您的存储中。