Ale*_*ter 4 django django-models cloudinary
我目前将Cloudinary与Django一起使用来存储用户个人资料图片,并希望将参数传递给它,将其存储在一个文件夹中并覆盖现有图像,而不是创建一个新图像。
在我的用户模型中:
picture = CloudinaryField('image')
Run Code Online (Sandbox Code Playgroud)
这可以按预期与Django Admin和表格一起使用。我只希望能够将其存储在用户/ USERNAME /个人资料文件夹中,并在有人更新其照片以删除旧照片时将其存储。
更新
在2016年有效的解决方案不再可行。根据docs,以下将起作用:
image = CloudinaryField(
"Image",
overwrite=True,
resource_type="image",
transformation={"quality": "auto:eco"},
format="jpg",
)
Run Code Online (Sandbox Code Playgroud)
允许的PARAMS列在这里,并在这里为版本的代码1.17.0或在这里的文档。
例如,我对关键字感到困惑quality。使用API时我曾直接使用它,但CloudinaryField不允许使用。
定义上传照片质量的正确方法是设置:
transformation={"quality": 80}。
在文档中对此进行了澄清,其中解释为:
请注意,将SDK用于动态类型语言时,可以直接指定转换参数,而无需使用此转换参数。
这完美地工作:
from cloudinary.models import CloudinaryField as BaseCloudinaryField
from django.db import models
class CloudinaryField(BaseCloudinaryField):
def upload_options(self, model_instance):
return {
'public_id': model_instance.name,
'unique_filename': False,
'overwrite': True,
'resource_type': 'image',
'tags': ['map', 'market-map'],
'invalidate': True,
'quality': 'auto:eco',
}
class MarketMap(models.Model):
name = models.CharField(max_length=17)
image = CloudinaryField()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |