python - django 和 sorl.thumbnail 模型字段的问题

标签 python django sorl-thumbnail

我想要什么:当用户从管理面板下载照片时,我想创建一个预览(缩略图)并将其保存到该模型的其他字段中,使用 sorl.thumbnail。

我做什么:

from sorl.thumbnail import ImageField, get_thumbnail

class sitePhotos(models.Model):

    photo = ImageField(verbose_name=u'Фотография для галереи', 
               upload_to=upload_galery_photos, null=True)

    preview = ImageField(upload_to=upload_galery_previews, editable=False, null=True)

迁移正在进行中。

我试图覆盖类 sitePhotos 中的保存方法:

def save(self, *args, **kwargs):
    self.preview = get_thumbnail(self.photo, '250x250', crop='center', quality=99)
    super(sitePhotos, self).save(*args, **kwargs)

问题:文档 sorl.thumbnail:https://sorl-thumbnail.readthedocs.io/en/latest/examples.html#low-level-api-examples

im = get_thumbnail(my_file, '100x100', crop='center', quality=99)

my_file 的类型是什么?它是一个 url、ImageField 还是什么?当启动时出现错误“ImageField”对象没有属性“_commissed”

谷歌:override save method - 'ImageFile' object has no attribute '_committed'

之后我对网址和其他内容有了魔法。我的完成功能:

self.preview = get_thumbnail('../'+self.photo.url, '250x250',
                            crop='center', quality=99).url

可能有人有这方面的工作示例,或者我可以在哪里阅读相关内容?谢谢您的解答!

最佳答案

您可以对图像文件使用保存方法:

def save(self, *args, **kwargs):
    preview = get_thumbnail(self.photo, '250x250', crop='center', quality=99)
    self.preview.save(preview.name, ContentFile(preview.read()), save=False)
    super(sitePhotos, self).save(*args, **kwargs)

关于python - django 和 sorl.thumbnail 模型字段的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53169785/

相关文章:

django - 如何在Django(django-admin)中检查值转换?

python - sorl-thumbnail 不创建缩略图

python - 逻辑回归已超出最大迭代次数

python - 如何在 Eclipse 上运行 pytest?

python - 从 pandas DataFrame 中高效扩展行

python - Django Rest Framework 未根据请求传递 'X_USERNAME' - 验证方法参数

python - 表函数不在 shell 中打印

django - 使用 SSL (https) 的网络服务的 Nginx 设置

python - Django - 如何使用 sorl-thumbnail?

python - 更改格式 sorl 缩略图