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.py
中 INSTALLED_APPS
的底部即可。
当我删除模型实例时,我的 Amazon S3/Digitalocean Spaces 存储桶中的文件也会自动删除。
我在我的 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.py
中 INSTALLED_APPS
的底部即可。
当我删除模型实例时,我的 Amazon S3/Digitalocean Spaces 存储桶中的文件也会自动删除。