Django媒体文件自动删除

Django媒体文件自动删除,django,Django,当我通过Django administrator上传图像并再次删除图像文件时,为什么它不删除/media目录中的图像 当我删除图像文件时,我希望它自动删除图像,甚至从目录中删除,而不仅仅是从模型实例中删除 我的模型: class ImageForExtractText(models.Model): image = models.FileField() 和设置: STATIC_URL = '/static/' STATIC_ROOT = os.path.join(os.path.dirn

当我通过Django administrator上传图像并再次删除图像文件时,为什么它不删除
/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 administration中删除映像文件时,我应该怎么做才能做到这一点?它应该从Django管理和媒体目录中删除。

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)

这里已经有一个类似的问题,有很多答案: