У меня есть Book
модель.Он имеет некоторые поля, такие как title
, year publish
и т. Д. Кроме того, я переопределил save()
метод.Когда добавляются новые книги, он проверяет, существует ли книга, создает новый каталог с именем self.title
в MEDIA_ROOT
пути.
def save(self, *args, **kwargs):
book_dir = os.path.join(MEDIA_ROOT, self.title)
# check that at least one file is loading
if all([self.pdf, self.fb2, self.epub]):
raise ValidationError("At least 1 file should be uploaded!")
# create book's directory if it not exists
if os.path.exists(book_dir):
raise ValidationError("This book is already exists!")
else:
os.mkdir(book_dir)
# rename and edit storage location of books to book_dir
for field in [self.image, self.pdf, self.fb2, self.epub]:
field.storage.location = book_dir
super().save(*args, **kwargs) # Call the "real" save() method.
Также у меня есть переопределенный метод delete()
, который просто удаляет каталог изудаленная книга.
def delete(self, *args, **kwargs):
book_dir = os.path.join(MEDIA_ROOT, self.title)
rmtree(book_dir)
super().delete(*args, **kwargs) # Call the "real" delete() method.
delete()
метод работает хорошо, если я удаляю только 1 книгу.Но если я хочу удалить несколько файлов (все действия выполняются в панели администратора), удаляются только записи БД.
Итак, я хочу просто уловить этот момент, чтобы удалить каталог удаленной книги.