mc
может есть где-нить пример чего то подобного?
ну как то так(взято из моего тестового проекта):
# model.py
.....
from sorl.thumbnail import delete
from sorl.thumbnail.fields import ImageField
......
class Book(models.Model):
.....
cover = ImageField(......)
......
def is_empty_cover(self):
return True if self.cover else False
def save(self):
try:
old_book = Book.objects.get(id=self.id)
except Book.DoesNotExist:
pass
else:
if old_book.is_empty_cover() and old_book.cover != self.cover:
path_cover = os.path.join(settings.MEDIA_ROOT, '%s') % old_book.cover
if os.path.exists(path_cover):
delete(old_book.cover)
super(Book, self).save()
def delete(self):
try:
old_book = Book.objects.get(id=self.id)
except Book.DoesNotExist:
pass
else:
if old_book.is_empty_cover():
path_cover = os.path.join(settings.MEDIA_ROOT, '%s') % old_book.cover
if os.path.exists(path_cover):
delete(old_book.cover)
super(Book, self).delete()
P.S. Если будешь удалять отмечая чекбоксы слева в админке, то обрати внимание что удаление не будет работать для этого надо будет делать как то так:
# admin.py
....
class BookAdmin(admin.ModelAdmin):
.......
actions=['really_delete_selected']
def get_actions(self, request):
actions = super(BookAdmin, self).get_actions(request)
del actions['delete_selected']
return actions
def really_delete_selected(self, request, queryset):
for book in queryset:
book.delete()
self.message_user(request, u'успешно удалено книг: %s' % queryset.count())
really_delete_selected.short_description = u'удалить выбранные книги'
.....
подробнее вроде тут
https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/