Django 删除upload_to文件的步骤


Posted in Python onMarch 30, 2020

新版Django在admin后台直接删除一条数据时,file = models.FileField(upload_to=‘file')上传的文件并不会删除,以下为解决方法:

在model.py加入:

from django.db.models.signals import pre_delete
from django.dispatch.dispatcher import receiver
@receiver(pre_delete, sender=AddDateModel)
def mymodel_delete(sender, instance, **kwargs):
  # Pass false so FileField doesn't save the model.
  instance.file.delete(False)

补充知识:django之重写FileField字段的保存实例

重写FileField字段的保存,以重命名为例

settings.py添加配置

settings.py中末尾添加配置如下,指定指向的操作文件中的类:

# 文件上传重写
DEFAULT_FILE_STORAGE = "app.customfilefield.storage.FileStorage"

添加FileStorage

app应用下添加python包customfilefield,注意有init.py文件,customfilefield下创建py文件storage.py,文件内容为:

storage.py

# -*-coding:utf-8 -*-
from django.core.files.storage import FileSystemStorage
from django.http import HttpResponse
from django.conf import settings
import os, time, random
from app import utils
 
class FileStorage(FileSystemStorage):
  def __init__(self, location=settings.MEDIA_ROOT, base_url=settings.MEDIA_URL):
    #初始化
    super(FileStorage, self).__init__(location, base_url)
 
  #重写 _save方法
  def _save(self, name, content):
    #文件扩展名
    ext = os.path.splitext(name)[1]
    #文件目录
    d = os.path.dirname(name)
    # 定义文件名,源文件名,避开系统定义的随机字符串追加,所以避开不用name字段
    end = utils.find_last(str(content), ".")
    filename = ""
    if end != -1:
      filename = str(content)[:end]
    # 定义文件名,年月日时分秒随机数
    fn = time.strftime("%Y%m%d%H%M%S")
    fn = fn + "_%d" % random.randint(0,100)
    #重写合成文件名
    name = os.path.join(d, filename + fn + ext)
    #调用父类方法
    return super(FileStorage, self)._save(name, content)

utils.py

# 获取字符串中指定字符最后一次出现的位置
def find_last(string,str):
  last_position=-1
  while True:
    position=string.find(str,last_position+1)
    if position==-1:
      return last_position
    last_position=position

如此,最后上传的文件名为原文件名加上年月日时分秒加上0-100的随机数保存,效果如下:

Django 删除upload_to文件的步骤

以上这篇Django 删除upload_to文件的步骤就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
ssh批量登录并执行命令的python实现代码
May 25 Python
Python中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
Python操作SQLite数据库的方法详解
Jun 16 Python
python将字典内容存入mysql实例代码
Jan 18 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
Apr 18 Python
Python 获取windows桌面路径的5种方法小结
Jul 15 Python
Pyinstaller 打包exe教程及问题解决
Aug 16 Python
python如何保证输入键入数字的方法
Aug 23 Python
python获取Linux发行版名称
Aug 30 Python
解决python -m pip install --upgrade pip 升级不成功问题
Mar 05 Python
Python request中文乱码问题解决方案
Sep 17 Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 Python
python with语句的原理与用法详解
Mar 30 #Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 #Python
Python进程的通信Queue、Pipe实例分析
Mar 30 #Python
基于Django OneToOneField和ForeignKey的区别详解
Mar 30 #Python
django 扩展user用户字段inlines方式
Mar 30 #Python
Python3标准库之threading进程中管理并发操作方法
Mar 30 #Python
解决django xadmin主题不显示和只显示bootstrap2的问题
Mar 30 #Python
You might like
桌面中心(三)修改数据库
2006/10/09 PHP
php 应用程序安全防范技术研究
2009/09/25 PHP
关于PHP5 Session生命周期介绍
2010/03/02 PHP
php加密算法之实现可逆加密算法和解密分享
2014/01/21 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
FireFox JavaScript全局Event对象
2009/06/14 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
requireJS使用指南
2016/04/27 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
jQuery修改DOM结构_动力节点Java学院整理
2017/07/05 jQuery
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
python里dict变成list实例方法
2019/06/26 Python
django 微信网页授权认证api的步骤详解
2019/07/30 Python
python解析yaml文件过程详解
2019/08/30 Python
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
一篇.NET面试题
2014/09/29 面试题
教师申诉制度
2014/01/29 职场文书
《记承天寺夜游》教学反思
2014/02/16 职场文书
奥巴马就职演讲稿
2014/05/15 职场文书
霸气队列口号
2014/06/18 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
实习计划书范文
2015/01/16 职场文书
婚礼答谢礼品
2015/01/20 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
元旦主持词开场白
2015/05/29 职场文书
门面租赁合同范文
2019/08/06 职场文书