Django Media文件自动删除

时间:2019-03-22 15:51:15

标签: django

当我通过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 个答案:

答案 0 :(得分:1)

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)