2013-04-25 8 views
6

Ich verwende easy-thumbnails in meinem Django 1.5-Projekt, um Miniaturbilder zu erzeugen.Alle mit easy-thumbnails erstellten Vorschaubilder entfernen Django App

Ich habe verschiedene Größen für Thumbnails zum Testen verwendet, aber jetzt möchte ich alle Thumbnails von meinem Dateisystem und von den easy-Thumbnails Datenbankeinträgen löschen. Im Laufe der Zeit habe ich mehrere verschiedene Größen von vielen Bildern erstellt und möchte sie jetzt entfernen.

Meine Absicht ist es, mit einem leeren Fenster zu beginnen und alle Miniaturbilder zu entfernen. Ich konnte nicht herausfinden, wie das geht.

Antwort

5

hatte gerade das gleiche Problem.

Gegeben:

class MyModel(Model): 
    image = ThumbnailerImageField() 

Sie alle Vorschaubilder mit löschen:

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

Wenn Sie stattdessen haben:

class MyModel(Model): 
    image = ImageField() 

Dann sollten Sie verwenden:

from easy_thumbnails.files import get_thumbnailer 

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

Werke für mich, aber Import sollte sein: 'von easy_thumbnails.files importieren get_thumbnailer' (s in easy_thumbnails im Code fehlt oben) –

+0

Typo fixiert, danke! – knite

+0

Hey Leute. Eigentlich funktioniert diese Lösung nicht für mich. Stimmt es jetzt? –

3

Ich habe ein Bild Modell erstellt, in dem ich eine Methode hinzugefügt, wie

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) 

folgt Und es wirkt wie ein Zauber.

Verwandte Themen