一 使用环境
开发系统: windows
IDE: pycharm
数据库: msyql,navicat
编程语言: python3.7 (Windows x86-64 executable installer)
虚拟环境: virtualenvwrapper
开发框架: Django 2.2
二 Django Admin 删除文件同时删除资源(图片文件)
1.都写在 admin.py 中(也可以写到models.py中),delete_upload_files方法必需放到admin模型类的下方,放上面就不能执行.
import os from django.db.models.signals import post_delete from django.dispatch import receiver from django.conf import settings
1.1 标准方法,sender=Company,Company是models模型类名,不是注册admin模型名,'公司logo'为字段名
# 删除文件同时删除资源图片文件(公司logo) @receiver(post_delete, sender=Company) def delete_upload_files(sender, instance, **kwargs): files = getattr(instance, '公司logo') if not files: return fname = os.path.join(settings.MEDIA_ROOT, str(files)) if os.path.isfile(fname): os.remove(fname)
1.2 非标准方法,目的都是把路径拼接正确
# 删除文件同时删除资源图片文件(图片条码) @receiver(post_delete, sender=UserProfile) def delete_upload_files(sender, instance, **kwargs): files = getattr(instance, '图片条码') if not files: return # 字段属性为ImageField,保存时前面加了media,不然保存不到media下,这里取值时要把media\共5位去除,拼接路径从第6位开始,数据库中存储为(media\code\RY0001.png). fname = os.path.join(settings.MEDIA_ROOT, str(files)[6:]) if os.path.isfile(fname): os.remove(fname)
开发系统: windows
IDE: pycharm
数据库: msyql,navicat
编程语言: python3.7 (Windows x86-64 executable installer)
虚拟环境: virtualenvwrapper
开发框架: Django 2.2
二 Django Admin 删除文件同时删除资源(图片文件)
1.都写在 admin.py 中(也可以写到models.py中),delete_upload_files方法必需放到admin模型类的下方,放上面就不能执行.
import os from django.db.models.signals import post_delete from django.dispatch import receiver from django.conf import settings
1.1 标准方法,sender=Company,Company是models模型类名,不是注册admin模型名,'公司logo'为字段名
# 删除文件同时删除资源图片文件(公司logo) @receiver(post_delete, sender=Company) def delete_upload_files(sender, instance, **kwargs): files = getattr(instance, '公司logo') if not files: return fname = os.path.join(settings.MEDIA_ROOT, str(files)) if os.path.isfile(fname): os.remove(fname)
1.2 非标准方法,目的都是把路径拼接正确
# 删除文件同时删除资源图片文件(图片条码) @receiver(post_delete, sender=UserProfile) def delete_upload_files(sender, instance, **kwargs): files = getattr(instance, '图片条码') if not files: return # 字段属性为ImageField,保存时前面加了media,不然保存不到media下,这里取值时要把media\共5位去除,拼接路径从第6位开始,数据库中存储为(media\code\RY0001.png). fname = os.path.join(settings.MEDIA_ROOT, str(files)[6:]) if os.path.isfile(fname): os.remove(fname)
开发系统: windows
IDE: pycharm
数据库: msyql,navicat
编程语言: python3.7 (Windows x86-64 executable installer)
虚拟环境: virtualenvwrapper
开发框架: Django 2.2
二 Django Admin 删除文件同时删除资源(图片文件)
1.都写在 admin.py 中(也可以写到models.py中),delete_upload_files方法必需放到admin模型类的下方,放上面就不能执行.
import os from django.db.models.signals import post_delete from django.dispatch import receiver from django.conf import settings
1.1 标准方法,sender=Company,Company是models模型类名,不是注册admin模型名,'公司logo'为字段名
# 删除文件同时删除资源图片文件(公司logo) @receiver(post_delete, sender=Company) def delete_upload_files(sender, instance, **kwargs): files = getattr(instance, '公司logo') if not files: return fname = os.path.join(settings.MEDIA_ROOT, str(files)) if os.path.isfile(fname): os.remove(fname)
1.2 非标准方法,目的都是把路径拼接正确
# 删除文件同时删除资源图片文件(图片条码) @receiver(post_delete, sender=UserProfile) def delete_upload_files(sender, instance, **kwargs): files = getattr(instance, '图片条码') if not files: return # 字段属性为ImageField,保存时前面加了media,不然保存不到media下,这里取值时要把media\共5位去除,拼接路径从第6位开始,数据库中存储为(media\code\RY0001.png). fname = os.path.join(settings.MEDIA_ROOT, str(files)[6:]) if os.path.isfile(fname): os.remove(fname)
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django Admin 删除文件同时删除资源文件(delete_upload_files) - Python技术站