【问题标题】:Remove all thumbnails generated with easy-thumbnails Django App删除使用easy-thumbnails Django App生成的所有缩略图
【发布时间】:2013-04-19 17:44:11
【问题描述】:

我在我的 Django 1.5 项目中使用easy-thumbnails 来生成缩略图。

我一直在使用几种不同大小的缩略图进行测试,但现在我想从我的文件系统和 easy-thumbnails 数据库条目中清除所有缩略图。随着时间的推移,我创建了许多不同大小的图像,现在我想删除它们。

我的意图是从一张白纸开始,并删除所有缩略图。我不知道该怎么做。

【问题讨论】:

    标签: django thumbnails easy-thumbnails


    【解决方案1】:

    刚刚遇到同样的问题。

    给定:

    class MyModel(Model):
        image = ThumbnailerImageField()
    

    您可以删除所有缩略图:

    for m in MyModel.objects.all():
        m.image.delete_thumbnails()
    

    如果你有:

    class MyModel(Model):
        image = ImageField()
    

    那么你应该使用:

    from easy_thumbnails.files import get_thumbnailer
    
    for m in MyModel.objects.all():
        thumbnailer = get_thumbnailer(m.image)
        thumbnailer.delete_thumbnails()
    

    【讨论】:

    • 对我有用,但导入应该是:from easy_thumbnails.files import get_thumbnailer(上面代码中的 easy_thumbnails 中缺少 s)
    • 大家好。实际上,这个解决方案对我不起作用。现在正确吗?
    【解决方案2】:

    我已经创建了一个图片模型,我在其中添加了一个方法,如下

    from easy_thumbnails.models import Source, Thumbnail
    def clean_thumbnail(self):
        if self.image:
            sources = Source.objects.filter(name=self.image.name)
            if sources.exists():
                for thumb in Thumbnail.objects.filter(source=sources[0]):
                    try:
                        os.remove(os.path.join(settings.MEDIA_ROOT, thumb.name))
                        thumb.delete()
                    except Exception, e:
                        logger.warning(e)
    

    它就像一个魅力。

    【讨论】:

    • 可以使用thumbnail_default_storage 删除文件。
    猜你喜欢
    • 2015-06-26
    • 2013-05-04
    • 2013-12-22
    • 1970-01-01
    • 2016-09-24
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    相关资源
    最近更新 更多