zoukankan      html  css  js  c++  java
  • 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)
     
    #需要注意的一点是删除文件要在删除或修改记录之前进行
     
  • 相关阅读:
    Cookie与session
    orm之中介模型
    mysql数据库基础命令——幕布链接
    css——幕布链接
    HTML基础——幕布链接
    js基础——幕布
    三层结构与MVC
    [C++]3-1 得分(Score ACM-ICPC Seoul 2005,UVa1585)
    [C++]环状序列(CircularSequence,ACM/ICPC Seoul 2004,UVa1584)
    [C++]猜数字游戏的提示(Master-Mind Hints,UVa340)
  • 原文地址:https://www.cnblogs.com/ddb1-1/p/12434881.html
Copyright © 2011-2022 走看看