从数据库/模型中删除对象时,如何让 Django Admin 删除文件? [英] How do I get Django Admin to delete files when I remove an object from the database/model?

查看:352
本文介绍了从数据库/模型中删除对象时,如何让 Django Admin 删除文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用带有标准 ImageField 的 1.2.5 并使用内置存储后端.文件上传正常,但是当我从管理员中删除条目时,服务器上的实际文件不会删除.

I am using 1.2.5 with a standard ImageField and using the built-in storage backend. Files upload fine but when I remove an entry from admin the actual file on the server does not delete.

推荐答案

您可以收到 pre_deletepost_delete 信号(见下面@toto_tico 的评论)并调用 delete() FileField 对象上的方法,因此(在 models.py 中):

You can receive the pre_delete or post_delete signal (see @toto_tico's comment below) and call the delete() method on the FileField object, thus (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)

这篇关于从数据库/模型中删除对象时,如何让 Django Admin 删除文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆