2013-04-25 48 views
6

我在我的Django 1.5項目中使用easy-thumbnails生成縮略圖圖像。刪除使用簡易縮略圖生成的所有縮略圖Django App

我一直在使用幾種不同大小的縮略圖進行測試,但現在我想從我的文件系統和簡單縮略圖數據庫條目中清除所有縮略圖。隨着時間的推移,我創建了幾個不同大小的許多圖像,我現在想刪除它們。

我的目的是從一個乾淨的石板開始,並刪除所有的縮略圖圖像。我無法找到如何做到這一點。

回答

5

剛剛有同樣的問題。

考慮:

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() 
+0

對我的作品,但進口應該是: '從easy_thumbnails.files導入get_thumbnailer' (缺少S IN easy_thumbnails在上面的代碼中) – 2016-03-14 10:11:10

+0

錯字固定的,謝謝! – knite 2016-03-14 17:24:20

+0

嘿傢伙。其實,這個解決方案對我來說不起作用。現在是否正確? – 2017-11-25 15:44:03

3

我已經創建了我添加了一個方法的圖像模型,如下

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) 

它就像一個魅力。