删除具有ImageField字段的对象时,不删除图像文件

时间:2012-07-12 16:31:14

标签: django imagefield

我的模型Picture带有ImageField。删除Picture的实例时,ImageField中设置的文件不会被删除。

这是一个错误吗?我该怎么办?

2 个答案:

答案 0 :(得分:27)

删除与FileFieldImageField相关联的文件在Django 1.3中被有意删除。见ticket #6456。如果请求出现问题,Django会广泛使用事务来防止数据损坏。如果滚动支持删除事务,则从文件系统中删除文件后,您现在有一条指向不存在的文件的记录。所有要求自动删除的门票都被简单地标记为“不会修复”,所以这不会改变。

有关解决方法,请参阅this previous StackOverflow question

答案 1 :(得分:0)

假设?

class Picture(models.Model):
    image = ImageField(blank=True, null=True, upload_to="pics")

    def delete(self, *args, **kwargs):
        self.image.delete()
        super(Picture, self).delete(*args, **kwargs)

然后我们手动创建并删除它..

image = "./image.jpg"
picture = Picture.objects.create(image=File(open(image, "r"))
picture.save()

然后删除它?

picture.delete()

HTH