背景
最近、DjagoRestFramework と React を使って簡単なアプリを開発していたところ、curd でデータ削除時に各モデルに紐づいた画像を表面上では削除できるが、django アプリ側のディレクトリに画像ファイルが残ってしまう現象に少々困ったので良いものはないかと探してみると django_creanup なるものがあることを発見し、使用してみたところ、感動するほど便利だったのでこうして共有している所存です。
目的
- データ削除時にそのレコードに紐づいた画像ファイルを削除したい
- view の処理は増やしたくない
- もちろん手動は嫌なので自動にしたい
django_creanup を使ってみた
- 公式 ( https://github.com/un1t/django-cleanup )
- バージョンの確認 ( https://pypi.org/project/django-cleanup/ )
※ 以下公式より引用、そして翻訳
互換性
- Django 2.2, 3.0, 3.1, 3.2 (詳細はDjango公式のサポートバージョンをご覧ください https://www.djangoproject.com/download/#supported-versions)
- Python 3.5+
- sorl-thumbnail https://github.com/jazzband/sorl-thumbnail と互換性があります。
- easy-thumbnail https://github.com/SmileyChris/easy-thumbnails と互換性があります。
インストール
$ pip install django-cleanup
> ### 構成
``settings.py`` の ``INSTALLED_APPS`` 以下に ``django_cleanup`` を追加します。
>(``django_cleanup.apps.CleanupConfig`` でも ``django_creanup`` だけでもどちらでも大丈夫です)
>```python:settings.py
INSTALLED_APPS = [
...,
'django_cleanup.apps.CleanupConfig',
or
'django_cleanup',
]
これだけです、他には何も必要ありません。
引用にもある通り、使用するためにはこれだけで大丈夫です。
view に何も追加必要する必要がないのが個人的にはありがたいなという感じです。
注意点としては、サードパーティーモジュールなので他のモジュールと衝突してしまう可能性があることです。
その場合はよく考えて使いましょう。
まとめ
django_creanup めちゃくちゃ便利!!!!!!!!!!