Удалить все миниатюры, созданные с помощью приложения 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)
и это работает как шарм.