Удалить все миниатюры, созданные с помощью приложения easy-thumbnails Django

Я использую easy-миниатюры в моем проекте Django 1.5 для создания миниатюр изображений.

Я использовал несколько разных размеров для эскизов для тестирования, но теперь я хотел бы очистить все эскизы из моей файловой системы и из записей базы данных easy-thumbnails. Со временем я создал несколько разных размеров многих изображений, и я хотел бы удалить их сейчас.

мое намерение состоит в том, чтобы начать с чистого листа и удалить все миниатюры изображения. Я не мог понять, как это сделать.

2 ответов


просто была такая же проблема.

дано:

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

и это работает как шарм.