Django(DRF)でAPIからデータ削除時に各モデルに紐づいた画像をディレクトリからも自動削除してくれるdjango_creanupが感動するほど便利だった件


背景

最近、DjagoRestFramework と React を使って簡単なアプリを開発していたところ、curd でデータ削除時に各モデルに紐づいた画像を表面上では削除できるが、django アプリ側のディレクトリに画像ファイルが残ってしまう現象に少々困ったので良いものはないかと探してみると django_creanup なるものがあることを発見し、使用してみたところ、感動するほど便利だったのでこうして共有している所存です。

目的

  • データ削除時にそのレコードに紐づいた画像ファイルを削除したい
  • view の処理は増やしたくない
  • もちろん手動は嫌なので自動にしたい

django_creanup を使ってみた

※ 以下公式より引用、そして翻訳

互換性

インストール

 $ pip install django-cleanup

構成

settings.pyINSTALLED_APPS 以下に django_cleanup を追加します。

django_cleanup.apps.CleanupConfig でも django_creanup だけでもどちらでも大丈夫です)

settings.py
INSTALLED_APPS = [
    ...,
    'django_cleanup.apps.CleanupConfig',
    or
    'django_cleanup',
]

これだけです、他には何も必要ありません。

引用にもある通り、使用するためにはこれだけで大丈夫です。

view に何も追加必要する必要がないのが個人的にはありがたいなという感じです。

注意点としては、サードパーティーモジュールなので他のモジュールと衝突してしまう可能性があることです。

その場合はよく考えて使いましょう。

まとめ

django_creanup めちゃくちゃ便利!!!!!!!!!!