Django Media file автоудаление - PullRequest
0 голосов
/ 22 марта 2019

Когда я загружаю изображение через администратора Django и снова удаляю файл изображения, почему он не удаляет изображение в каталоге /media?

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

Моя модель:

class ImageForExtractText(models.Model):
    image = models.FileField()

И настройки:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static")

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media")

Что мне нужно сделать, чтобы удалить файл изображения из администрации Django? Его следует удалить как из администрации Django, так и из каталога мультимедиа.

1 Ответ

1 голос
/ 22 марта 2019

Django не удаляет файлы при удалении.

Вы можете добавить сигнал для удаления файла:

from django.db.models.signals import pre_delete
from django.dispatch.dispatcher import receiver

class ImageForExtractText(models.Model):
    image = models.FileField()

@receiver(pre_delete, sender=ImageForExtractText)
def delete_image(sender, instance, **kwargs):
    # Pass false so FileField doesn't save the model.
    if instance.image:
        instance.image.delete(False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...