我有一个带有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)
---
我编辑了此模型并通过上传新图像更改了图像字段。
我的问题,当我用新图像更新此条目时,有没有办法从其目录(从媒体文件夹)删除以前的图像。我正在使用django 1.4.3。
答案 0 :(得分:2)
您可以使用django's signals或只使用overwrite the save
method on your model。我会写一个信号。类似下面的内容(请注意,这是未经测试的):
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)