如何将ImageField(在我的模型中)上传的一个图像替换为由同一个ImageField选择的新图像?
并且,当我删除模型对象(批量删除)时,是否可以删除由ImageField上传的所有图像?
答案 0 :(得分:1)
这可能会变得棘手, 很多时候取决于你的约束条件。 1.为模型编写自己的保存方法,然后删除旧图像a并替换为新图像。 os.popen(“rm%s”%str(info.photo.path))
答案 1 :(得分:1)
经过数小时的搜索,我找到了这段代码。 它在Django 3中对我有用
class Image(models.Model):
image = models.ImageField()
def save(self, *args, **kwargs):
try:
this = Image.objects.get(id=self.id)
if this.image != self.image:
this.image.delete(save=False)
except:
pass # when new photo then we do nothing, normal case
super().save(*args, **kwargs)