在Django中修改ImageFiled条目时,从媒体文件夹中删除先前的图像 [英] Remove previous image from media folder when ImageFiled entry modified in Django

查看:27
本文介绍了在Django中修改ImageFiled条目时,从媒体文件夹中删除先前的图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有ImageField的模型.

I have a Model with a ImageField.

class Photo(models.Model):
  ----
  image = models.ImageField(verbose_name=_('Image'),upload_to='images/category/%Y/%m/%d/',
            max_length=200,null=True,blank=True)
  ---

我编辑了此模型,并通过上传新图像更改了图像字段.

I edited this model and changed the image field by uploading a new image.

我的问题是,当我用新图像更新该条目时,是否有办法从其目录(从媒体文件夹)中删除前一个图像.我正在使用django 1.4.3.

My question, Is there a way to delete the previous image from its directory(from media folder) when I updates this entry with new image. I am using django 1.4.3 .

推荐答案

您可以使用 django的信号或简单地覆盖模型上的 save 方法.我会写一个信号.类似于以下内容(请注意,这未经测试):

You can either use django's signals or simply overwrite the save method on your model. I would write a signal. Something like the following (note that this is untested):

from django.db.models.signals import pre_save
from django.dispatch import receiver

class Photo(models.Model):
     image = ...

@receiver(pre_save, sender=Photo)
def delete_old_image(sender, instance, *args, **kwargs):
    if instance.pk:
        existing_image = Photo.objects.get(pk=instance.pk)
        if instance.image and existing_image.image != instance.image:
            existing_image.image.delete(False)

这篇关于在Django中修改ImageFiled条目时,从媒体文件夹中删除先前的图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆