2013-04-25 13 views
6

Używam easy-thumbnails w moim projekcie Django 1.5 do generowania miniaturek.Usuń wszystkie miniatury wygenerowane za pomocą łatwych miniaturek Django App

Używałem kilku różnych rozmiarów miniatur do testowania, ale teraz chciałbym wyczyścić wszystkie miniatury z mojego systemu plików oraz z pozycji bazy danych łatwych miniaturek. Z czasem stworzyłem kilka różnych rozmiarów wielu obrazów i chciałbym je teraz usunąć.

Moim zamiarem jest zacząć od czystej karty i usunąć wszystkie miniatury. Nie mogłem się dowiedzieć, jak to zrobić.

Odpowiedz

5

Po prostu miał ten sam problem.

Dane:

class MyModel(Model): 
    image = ThumbnailerImageField() 

Można usunąć wszystkie miniatury z:

for m in MyModel.objects.all(): 
    m.image.delete_thumbnails() 

Jeśli zamiast mieć:

class MyModel(Model): 
    image = ImageField() 

Następnie należy użyć:

from easy_thumbnails.files import get_thumbnailer 

for m in MyModel.objects.all(): 
    thumbnailer = get_thumbnailer(m.image) 
    thumbnailer.delete_thumbnails() 
+0

prace dla mnie, ale import powinien być: 'From easy_thumbnails.files importować get_thumbnailer' (s brakuje w easy_thumbnails w kodzie powyżej) –

+0

Typo stałej, dzięki! – knite

+0

Hej chłopaki. Właściwie to rozwiązanie nie działa dla mnie. Czy teraz jest poprawny? –

3

Stworzyłem model obraz, w którym ja dodaną metodę, jak następuje

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) 

I działa jak czar.