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

首先模型中定义文件字段

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名,可以直接删除

效果演示 http://moviepart.cn/

你可能感兴趣的:(django)