2013-04-25 8 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' が –

+0

誤植を修正(上記のコードでeasy_thumbnails sで行方不明)感謝をインポート! – knite

+0

ねえねえ。実際、この解決策は私のためには機能しません。今は正しいですか? –

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) 

を次のように私は、私は方法を追加した画像のモデルを作成し、それは魔法のように動作します。

関連する問題