Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何在更新旧图像时将其删除?_Django_Django Models_Django Forms - Fatal编程技术网

Django 如何在更新旧图像时将其删除?

Django 如何在更新旧图像时将其删除?,django,django-models,django-forms,Django,Django Models,Django Forms,我希望在用户更新之前上传的图片时将其删除 我已经尝试过修改UserUpdate视图的form\u valid,也尝试过修改表单的save方法(不确定应该在何处进行修改) 这样: def form_valid(self, form): old_image = self.instance.picture.path os.remove(old_image) return super().form_valid(form) 我得到一个错误,说'Im

我希望在用户更新之前上传的图片时将其删除

我已经尝试过修改UserUpdate视图的
form\u valid
,也尝试过修改表单的
save
方法(不确定应该在何处进行修改)

这样:

    def form_valid(self, form):
        old_image = self.instance.picture.path
        os.remove(old_image)
        return super().form_valid(form)
我得到一个错误,说
'ImageFileDescriptor'对象没有属性“path”
。 找不到有关ImageFileDescriptor的任何有用信息

但如果我这样做:

def save(self):
    old_image = self.instance.picture.path
    os.remove(old_image)
我得到的图片就是我将要上传到表单中的图片。

我在我的项目中使用,效果非常好

因此,您可以执行以下操作:

pip-install-django-cleanup

然后在
设置.py中:

INSTALLED_APPS = (
     ...
    'django_cleanup.apps.CleanupConfig', # should go at the end
)
记得把它放在最后