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