Django Cleanup

django-cleanup автоматически удаляет файлы при удалении или изменении моделей.

Установка

1# Установка пакета
2pip install django-cleanup
1# Или через Poetry
2poetry add django-cleanup

Настройка

1# settings.py
2INSTALLED_APPS = [
3    'django_cleanup.apps.CleanupConfig',
4]

Автоматическая работа

После установки пакет автоматически:

  • Удаляет файл при удалении модели
  • Удаляет старый файл при замене на новый
  • Работает с 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.