使用easy-thumbnails Django应用生成的所有缩略图都需要被移除。

9
我在我的Django 1.5项目中使用easy-thumbnails生成缩略图。
我已经使用了几种不同大小的缩略图进行测试,但现在我想要清除文件系统和easy-thumbnails数据库条目中的所有缩略图。随着时间的推移,我创建了许多图片的不同大小的缩略图,现在我想要删除它们。
我的意图是从头开始,删除所有缩略图。我找不到如何做到这一点的方法。
2个回答

10

刚刚遇到了同样的问题。

给定:

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) - Johannes Lerch
2
嘿,大家好。实际上,这个解决方案对我不起作用。现在正确了吗? - Q-bart

6
我已经创建了一个Picture模型,并添加了一个方法,如下所示。
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)

它的运作非常完美。


1
可以使用 thumbnail_default_storage 来删除文件。 - alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接