删除使用简易缩略图Django App生成的所有缩略图

时间:2013-04-25 17:47:51

标签: django thumbnails easy-thumbnails

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

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

我的目的是从一个干净的平板开始并删除所有缩略图。我无法知道该怎么做。

2 个答案:

答案 0 :(得分:7)

遇到同样的问题。

假设:

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()

答案 1 :(得分:4)

我创建了一个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)

它就像一个魅力。