django:在models中实现上传图片“之前”删除旧图
2020-02-04 23:34
911 查看
需求
使用ImageField字段,想在上传新的图片之前删除文件中旧的图片。
实现
1.models中导入两个库,新建一个函数
两个库:
from django.db.models.signals import pre_delete from django.dispatch import receiver
带有图片上传的模型类:
class Student(models.Model): ..... student_portrait = models.ImageField(upload_to="portrait", verbose_name="头像") ...
新建一个函数:
@receiver(pre_delete, sender=Student) #sender ImageField字段所在的类 def file_delete(instance, **kwargs): # 设置True,删除之后保存模型,设置Fasle删除之后不保存模型,view中还可继续其它操作 instance.~~~.delete(True) # ~~~=类中imageField目标字段
2.views中导入模型和新建函数进行使用
file_delete(instance=Student.objects.get(id=1))
使用总结
- 其它使用方法:文件类型一样可以生效
- 局限性:只适合更新操作,如果获取的instance不存在就很麻烦。假如再加一句判断获取实例是否存在的语句又显得太不优雅,这么做的话,可能需要至少三条models语句才能完成图片的更新。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 图片上传代码-旧的实现方式,项目中已删除,发表做备用
- express(jade或ejs)如何实现上传图片到服务器并在客户端展示(在客户端可以删除)
- django中实现图片上传
- java图片上传后台实现以及删除时删除目录
- 图片上传代码-旧的实现方式,项目中已删除,发表做备用
- Django2.0.4+Uploadify3.0(h5版) 实现多文件异步上传和删除
- 快速实现:删除和预览当前选择需要上传的图片
- Nodejs实现图片上传、压缩预览、定时删除功能
- 图片上传代码-旧的实现方式,项目中已删除,发表做备用
- Django Admin实现上传图片校验功能
- Django 实现图片上传和显示
- python总结26 django 富文本编辑器实现上传图片
- 07、FastDFS的概念,使用。图片上传保存功能的实现,图片删除功能。根据模板id返回规格和规格选项。将勾选的规格和选项存入到封装对象。通过勾选的规格选项自动创建item的List
- django中上传图片分页三级联动效果的实现代码
- webuploader结合c# mvc实现图片上传,删除,编辑回显
- django-Ajax实现上传图片(原生JS以及jQuery写法)
- django如何实现文件的上传,修改,删除,展示(03)
- django中使用FastDFS分布式文件系统接口代码实现文件上传、下载、更新、删除
- weui框架实现上传、预览和删除图片功能代码
- django_models_文件上传和图片上传