1. ホーム
  2. django

[解決済み] データベース/モデルからオブジェクトを削除するとき、Django Admin にファイルを削除させるにはどうしたらいいですか?

2023-03-23 17:32:57

質問

1.2.5で標準のImageFieldを使い、組み込みのストレージバックエンドを使用しています。ファイルのアップロードは問題ありませんが、管理からエントリを削除すると、サーバー上の実際のファイルが削除されません。

どのように解決するのですか?

を受信することができます。 pre_delete または post_delete シグナルを呼び出し (下記の @toto_tico さんのコメントを参照)、その後に delete() メソッドを呼び出します(in models.py)。

class MyModel(models.Model):
    file = models.FileField()
    ...

# Receive the pre_delete signal and delete the file associated with the model instance.
from django.db.models.signals import pre_delete
from django.dispatch.dispatcher import receiver

@receiver(pre_delete, sender=MyModel)
def mymodel_delete(sender, instance, **kwargs):
    # Pass false so FileField doesn't save the model.
    instance.file.delete(False)