前言
在用Django框架编写项目的时候,我们往往会在settings中定义默认的图片上传路径,然后在model.py中定义上传文件的时候,直接默认使用已经定义好的路径,或者自己再添加下一级目录(例如:file = models.FileField(upload_to=‘alter/’, blank=True, null=True))。那么如果我们想实现这样一个功能:当我们对信息进行修改时,要更换图片,并且想要把替换掉的图片删除。我们需要用到下面的方法:
方法
1.在models中导入 pre_delete 和 receiver这两个包
from django.db.models.signals import pre_delete
from django.dispatch.dispatcher import receiver
2.在models中接收pre_delete信号、指定pre_delete信号源,然后调用FileField对象上的delete方法
class EsAlterModel(models.Model):
file = models.FileField(upload_to='alter/', blank=True, null=True
...
@receiver(pre_delete, sender=EsAlterModel)**sender=你要修改图片字段所在的类**
def file_delete(sender, instance, **kwargs):
# Pass false so FileField doesn't save the model.
# print('进入文件删