首页 > 解决方案 > 将默认图像设置为模型中的 CloudinaryField

问题描述

我最近开始使用 Cloudinary 进行媒体存储。
我有一个带有图像和封面图像字段的配置文件模型

无云

在更改为云媒体存储之前,模型如下所示:

class Profile(models.Model):
    user = models.OneToOneField(User, related_name='profile', on_delete=models.CASCADE)

    # setup without Cloudinary
    image = models.ImageField(default='profile_image/default.jpg', upload_to='profile_image', blank=False)
    cover_image = models.ImageField(default='cover_image/default.jpg', upload_to='cover_image', blank=False)

它允许我为两个字段设置默认图像。

与 Cloudinary

现在,添加 Cloudinary 后,它看起来像这样:

class Profile(models.Model):
    user = models.OneToOneField(User, related_name='profile', on_delete=models.CASCADE)

    # setup with Cloudinary
    image = CloudinaryField('image')
    cover_image = CloudinaryField('cover_image')

我希望能够为这两个字段设置默认图像。

这是相关库的版本

Django==2.1.5
cloudinary==1.17.0
django-cloudinary-storage==0.2.3
olefile==0.46
cloudinary-cli==0.3.4

标签: djangocloudinary

解决方案


Cloudinary 现在支持在请求的图像不存在时提供默认图像。

假设您希望在页面中显示默认图像,我对您是否可以从模型中执行此操作的知识有限,您可以在呈现该页面的视图中实现此功能,例如

CloudinaryImage("if_set_image.jpg").image(transformation=[
'default_image': "default_image.png"
])

有关更多信息,请阅读本文文档

鉴于您需要使用 cloudinary,您还可以考虑保留 django 提供的默认 ImageField(因此可以轻松设置默认选项)并用于cloudinary.uploader.upload("my_image.jpg")在您的视图中将图像上传到 cloudinary。


推荐阅读