Django-AWS S3, невозможно удалить объекты ведра

У меня есть проект Django с хранилищем MySQL, а медиа объекты (изображения) хранятся в простом хранилище AWS S3.

Админ может загружать изображения через панель администратора, и они также отображаются на сайте.

Когда администратор удаляет объекты, они удаляются в MySQL, но связанные с ними изображения сохраняются в ведре S3.

SETTINGS.PY

AWS_ACCESS_KEY_ID = ''
AWS_SECRET_ACCESS_KEY = ''
AWS_STORAGE_BUCKET_NAME = ''
AWS_S3_CUSTOM_DOMAIN = f"{AWS_STORAGE_BUCKET_NAME}.s3.me-south-1.amazonaws.com"
AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
PUBLIC_MEDIA_LOCATION = 'media'
MEDIA_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{PUBLIC_MEDIA_LOCATION}/'
DEFAULT_FILE_STORAGE = 'news.storage_backends.MediaStorage'

STORAGE_BACKENDS.PY

from storages.backends.s3boto3 import S3Boto3Storage
from django.conf import settings


class MediaStorage(S3Boto3Storage):
    location = 'media'
    default_acl = 'public-read'
    file_overwrite = False

Я являюсь пользователем, данные которого прилагаются,

enter image description here

Как сказал Луис, файлы сохраняются после удаления объекта. Я рекомендую создать сигнал для удаления файлов после удаления объекта:

@receiver(models.signals.post_delete, sender=YourModel)
def remove_image_file_from_s3_on_delete(sender, instance, **kwargs):
    instance.your_field_name.delete(save=False)

Я использовал приложение django-cleanup, его довольно легко настроить https://pypi.org/project/django-cleanup/

Вернуться на верх