django admin删除记录的同时删除文件

11 篇文章 0 订阅
11 篇文章 0 订阅

参考简书文章Python Django 调用post_delete() 做自定义删除

import os

from django.db import models
from django.db.models.signals import post_delete
from django.dispatch import receiver
from django.conf import settings


...

class Media_blog(models.Model):
    title = models.CharField(max_length=50)
    pub_date = models.DateField()
    content = models.TextField()
    source = models.CharField(max_length=300)
    source_description = models.CharField(max_length=50,
                                          null=True,
                                          blank=True)
    photo = models.ImageField(null=True,
                              blank=True,
                              upload_to='image',
                              max_length=200)

    class Meta:
        ordering = ('title',)

    def __str__(self):
        return self.title

## 添加监听器
@receiver(post_delete, sender=Media_blog)
def delete_upload_files(sender, instance, **kwargs):
    files = getattr(instance, 'photo')
    if not files:
        return
    fname = os.path.join(settings.MEDIA_ROOT, str(files))
    if os.path.isfile(fname):
        os.remove(fname)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值