Django:如何在删除模型实例时自动删除 Digitalocean Spaces/Amazon S3 上的媒体文件

Django: How to delete Media Files on Digitalocean Spaces/ Amazon S3 automatically when Model instance is deleted

我在我的 Django-App 中定义了以下模型

def directory_path(instance, filename):
    return 'attachments/{0}_{1}/{2}'.format(instance.date, instance.title, filename)

class Note(models.Model):
    title = models.CharField(max_length=200)
    date = models.DateField(default=datetime.date.today)
    # File will be saved to MEDIA_ROOT/attachments
    attachment = models.FileField(upload_to=directory_path)

    def __str__(self):
        return self.title

我成功设置了 AWS S3/ Digitalocean Spaces 来存储通过附件字段上传的媒体文件。但是,当我删除模型的一个实例时,该文件仍保留在我的存储桶中。如果相应的模型实例被删除,我必须做什么才能自动删除我的 s3 存储桶中的文件?

好的,所以最简单的方法似乎是使用第三方包 django-cleanup,详情请参阅 https://github.com/un1t/django-cleanup

您唯一需要做的就是安装应用程序,将其添加到 settings.pyINSTALLED_APPS 的底部即可。

当我删除模型实例时,我的 Amazon S3/Digitalocean Spaces 存储桶中的文件也会自动删除。