最近我开始尝试使用 Python 和 Django。我喜欢它,已经学到了很多东西,但还有很长的路要走……
我制作了一个包含 5 个图像字段的模型。在模型旁边,我还制作了一个表格来输入数据并保存它。到目前为止,一切都很好。现在我想写另一个表格来“编辑”上传的图片,意思是:
- 上传新图片
- 从数据库中删除“旧”图像
我编写了下面的代码来完成 1 个图像的工作:
if form.is_valid():
form_image = form.cleaned_data['image_1']
try:
details = Model.objects.get(pk=pk)
if details.image_1 != form_image:
details.image_1.delete(save=False)
except: pass # when new photo then we do nothing, normal case
form.save()
但我正在努力解决以下问题:
如何重写此代码以更新 5 个图像字段?因为在最坏的情况下,一个人可以编辑所有 5 个图像字段。我尝试使用“for循环”但从未成功。例如:
image_list = [image_1, image_2, image_3, image_4, image_5] if form.is_valid(): for image in image_list: form_image = form.cleaned_data[image] try: details = Model.objects.get(pk=pk) if details.image != form_image: details.image.delete(save=False) except: pass # when new photo then we do nothing, normal case form.save()
有没有更智能的方法来编写这段逻辑。我对这段代码的一个问题是它检查图像的名称。当我有多个具有相同名称的图像时,这可能会出错......
希望有人可以提供一些反馈并再次指出我正确的方向。
非常感谢!
亲切的问候