Django Cleanup
django-cleanup автоматически удаляет файлы при удалении или изменении моделей.
Установка
Настройка
Автоматическая работа
После установки пакет автоматически:
- Удаляет файл при удалении модели
- Удаляет старый файл при замене на новый
- Работает с FileField и ImageField
Исключения
1# Исключить модель из очистки
2from django_cleanup import cleanup
3
4@cleanup.ignore
5class MyModel(models.Model):
6 file = models.FileField(upload_to='uploads/')
7
8# Исключить определенные поля
9@cleanup.select(fields=['image'])
10class Article(models.Model):
11 title = models.CharField(max_length=200)
12 image = models.ImageField(upload_to='images/')
13 document = models.FileField(upload_to='documents/') # Не будет очищаться
Кастомизация очистки
1from django_cleanup import cleanup
2
3@cleanup.select(fields=['image'])
4class Product(models.Model):
5 name = models.CharField(max_length=200)
6 image = models.ImageField(upload_to='products/')
7
8 def cleanup_files(self):
9 # Кастомная логика очистки
10 if self.image:
11 # Дополнительные действия перед удалением
12 pass
FAQ
Q: Можно ли отключить для определенных полей?
A: Используй декоратор @cleanup.select для выборочной очистки.
Q: Работает ли с облачным хранилищем?
A: Да, работает с любыми storage backends.