在模型中将默认图像设置为CloudinaryField

时间:2020-03-28 15:24:36

标签: django cloudinary

我最近开始使用Cloudinary进行媒体存储。
我有一个包含图像和封面图像字段的Profile模型

没有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

1 个答案:

答案 0 :(得分:0)

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

假设您要在页面中显示默认图像,我对是否可以从模型中获取图像的了解有限,则可以在呈现该页面的视图中实现此功能例如

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

有关更多信息,请阅读此articledocumentation

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