8

我在我的 Django 1.5 项目中使用简单的缩略图来生成缩略图。

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

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

4

2 回答 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()
于 2014-04-27T01:06:04.087 回答
5

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

它就像一个魅力。

于 2013-08-05T22:46:40.090 回答