Django 数据库删除或修改记录同时删除media下存储文件


新的django版本移除了在删除或修改模型的时候自动删除对应的文件的功能,也是出于安全考虑,毕竟存储有价数据无价,可以通过限制上传文件大小来尽可能控制存储,不过当某些文件没有必要重复存储时就需要删除它来释放空间。

models.py

#引入包

from django.db.models.signals import pre_delete #删除文件
from django.dispatch.dispatcher import receiver #删除文件
 
class  download(models.Model):     #存储文件的class
    .............
     file = models.FileField(verbose_name=u'文件',upload_to='file',null=True, blank=True,max_length=100)  #可以是FileField、ImageField  亲测都有效
   ..............
 
#删除文件函数
@receiver(pre_delete, sender= download) #sender=你要删除或修改文件字段所在的类**
def download_delete(instance, **kwargs):       #函数名随意
    print('进入文件删除方法,删的是',instance. file)  #用于测试
    instance. file.delete(False) #file是保存文件或图片的字段名**
 
views.py
#引入
from app名字.models import download_delete  #删除文件
需要的地方调用
instance = download.objects.get(id = 1)
download_delete(instance)
 
#需要注意的一点是删除文件要在删除或修改记录之前进行
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM