最近我开始尝试使用Python和Django。我喜欢它,已经学会了很多,但还有很长的路要走...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()
是否有更智能的方法来编写这段逻辑。这个代码的问题在于它检查图像的名称。当我有多个同名的图像时,这可能会出错...
希望有人可以给出一些反馈意见,并指出我在正确的方向。
非常感谢!
亲切的问候
嗨,命名问题解决方案:我可以使图像名称独特,使用此重命名技术:[Django FileField与upload_to确定在运行时](http://stackoverflow.com/questions/1190697/django-filefield-with-upload-to-determined-at -运行)。但仍然是第一点:如何循环播放不同的图像?这段代码是否是'智能'的意思,这是处理图片上传的最佳方式吗?谢谢! –