【发布时间】:2018-07-12 10:22:50
【问题描述】:
我有一个非常复杂的案例,我无法在 django 中解决相关的字典功能。
这是我通过 html post messages.add_message(request, messages.INFO, data) 函数检索的数据输出:
{'id_370': '370', '350_370': 'try_1', '450_370': 'try_2', 'id_397': '397', '350_397': 'try_3', '450_397': 'try_4'}
try-1 try-2 try-3 try-4 是我想在我的数据库中更新的输入。
基本上我想做的是查找 id_ 并使用此命令过滤该对象qs = FP.objects.filter(id=i.lstrip('id_') 直到这里(第一个 for 循环)它工作正常。
我不能做的是另一个 for "for x in val" 循环,我在其中检查 _370 和 _397 等键末尾的 id,如果适合该键,我想检索它的值如果它的长度超过 1,则更新我的数据库。
我从 2 周开始就尝试这样做并阅读了很多文件,但我的技能不足以解决问题,但我认为我走在正确的道路上,不是吗?如果有人启发我,我会很高兴。 :)
这是我的 view.py,如下所示,我遇到了逻辑问题
else:
if request.method == 'POST':
data = request.POST.dict()
data.pop('csrfmiddlewaretoken', None)
ids = [k for k in data.keys() if 'id_' in k]
messages.add_message(request, messages.INFO, data)
for i in ids:
val = [b for b in data.keys() if '_' + i in b]
#messages.add_message(request, messages.INFO, val)
#messages.add_message(request, messages.INFO, i.lstrip('id_'))
qs = FP.objects.filter(id=i.lstrip('id_'))
for x in val:
updates = {}
if len(data.values[x]) > 1 and '350_' in data.keys():
updates['P_350'] = data.values[x]
if len(data.values[x]) > 1 and '450_' in data.keys():
updates['P_450'] = data.values[x]
if updates:
qs.update(**updates)
return render(request,"index.html")
【问题讨论】:
标签: python django python-3.x dictionary key-value