我正在使用Django创建一个库存照片网站,我的模型中有一个ImageField,问题是当用户更新图像字段时,原始图像文件不会从硬盘中删除。
更新后如何删除旧镜像?
发布于 2010-05-21 12:25:10
您必须手动删除旧图像。
图像的绝对路径存储在your_image_field.path
中。所以你会做类似这样的事情:
os.remove(your_image_field.path)
但是,为了方便起见,您可以使用关联的FieldFile对象,它可以方便地访问底层文件,并提供一些方便的方法。请参阅http://docs.djangoproject.com/en/dev/ref/models/fields/#filefield-and-fieldfile
发布于 2012-08-21 23:53:23
pip install django-cleanup
settings.py
INSTALLED_APPS = (
...
'django_cleanup.apps.CleanupConfig', # should be placed after your apps
)
发布于 2010-06-11 11:38:44
在模型中使用此自定义保存方法:
def save(self, *args, **kwargs):
try:
this = MyModelName.objects.get(id=self.id)
if this.MyImageFieldName != self.MyImageFieldName:
this.MyImageFieldName.delete()
except: pass
super(MyModelName, self).save(*args, **kwargs)
它在我的网站上对我很有效。这个问题也困扰着我,我不想在一开始就写一个清理脚本,而不是好的记账。如果有任何问题,请告诉我。
https://stackoverflow.com/questions/2878490
复制相似问题