django删除文章时同时删除OSS附件

新开博客,记录一下自学python的过程。

今天需要实现删除内容时删除相关附件。

首先模型中定义文件字段

class Audio(Media):
  file = models.FileField(upload_to=get_audio_path,null=True,blank=True)
  preview_file = models.CharField(max_length=100,null=True,blank=True)

我的default_storage就是用OSS,如果有多个文件系统,根据自己实际情况修改
一下是删除时同时删除文件的代码

@receiver(pre_delete, sender=Audio)
def delete_file(sender, instance, **kwargs):
  default_storage.delete(instance.file.name)
  default_storage.delete(instance.preview_file)  

注意模型字段,file字段是FileField,返回文件对象,OSS中的key名为instance.file.name
preview_file为文本字段,保存OSS的key名,可以直接删除

https://maoface.com 欢迎参观

posted @ 2020-04-26 14:12  13zhang  阅读(116)  评论(0)    收藏  举报