【问题标题】:Django Media file auto-deleteDjango 媒体文件自动删除
【发布时间】:2019-03-22 15:51:15
【问题描述】:

当我通过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 管理和媒体目录中删除。

【问题讨论】:

标签: django


【解决方案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)

【讨论】:

    猜你喜欢
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 2015-02-14
    • 1970-01-01
    相关资源
    最近更新 更多