我想要的是:当用户从管理员面板下载照片时,我想创建一个预览(缩略图)并使用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)


问题:说明文件: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?这是网址,ImageField还是什么?启动时出现错误“ ImageField”对象没有属性“ _committed”

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

在那之后,我对URLs和其他东西有了魔力。我的完成功能:

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)

08-28 13:52