2013-04-25 35 views
6

Tôi đang sử dụng easy-thumbnails trong dự án Django 1.5 của mình để tạo hình thu nhỏ.Xóa tất cả hình thu nhỏ được tạo bằng hình thu nhỏ dễ dàng Django App

Tôi đã sử dụng một vài kích thước khác nhau cho hình thu nhỏ để thử nghiệm, nhưng bây giờ tôi muốn xóa tất cả hình thu nhỏ khỏi hệ thống tệp của tôi và từ các mục nhập cơ sở dữ liệu dễ hình thu nhỏ. Theo thời gian, tôi đã tạo nhiều kích thước khác nhau của nhiều hình ảnh và tôi muốn xóa những hình ảnh đó ngay bây giờ.

Mục đích của tôi là bắt đầu bằng phương tiện chặn sạch và xóa tất cả hình thu nhỏ. Tôi không thể tìm ra cách để làm điều đó.

Trả lời

5

Chỉ có cùng một vấn đề.

Given:

class MyModel(Model): 
    image = ThumbnailerImageField() 

Bạn có thể xóa tất cả các hình thu nhỏ với:

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

Nếu bạn thay vì có:

class MyModel(Model): 
    image = ImageField() 

Sau đó, bạn nên sử dụng:

from easy_thumbnails.files import get_thumbnailer 

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

công trình đối với tôi, nhưng nhập khẩu nên là: 'từ easy_thumbnails.files nhập get_thumbnailer' (thiếu s trong easy_thumbnails trong đoạn code trên) –

+0

Typo cố định, cảm ơn! – knite

+0

Xin chào các bạn. Trên thực tế, giải pháp này không làm việc cho tôi. Nó có đúng không? –

3

Tôi đã tạo ra một mô hình Hình ảnh trong đó tôi đã thêm một phương pháp, như sau

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) 

Và nó hoạt động như một nét duyên dáng.