我有一个网页,我将乘客信息列表显示为一个表格。这是常见的东西:到达时间,航班号等。
我已对表格进行了编辑,因此当用户点击某个包含信息的列时,他可以编辑此列。当他最终点击确认时,我只将已编辑的列与值和行号一起发送到视图,该视图假设从我发送的数据中找到列表行,找到密钥并更新原始值。
我从编辑列中获得的json值如下所示:
[{u'classname': u'flight', u'column': 6, u'value': u'F1521', u'row': 0}, {u'classname': u'flight', u'column': 6, u'value': u'FI521', u'row': 1}]
我到目前为止更新值的代码如下所示:
# Original data
query = UploadOrderModel.objects.filter(hashId = receiptNr)
# Gives me a list of dictionaries containing these keys
data = query.values("office", "reserv", "title","surname","firstN",
"arrival", "flight", "transferF", "hotelD", "tour")
# Update
json_dump = json.loads(request.body)
if json_dump:
for d in json_dump:
# get row number
row = int(d['row'])
# updates dictionary value at row
data[row][d['classname']] = d['value']
但这不会更新价值。我已经检查了是否获得了正确的更新值,而且是,所以情况并非如此,行是正确的,如果我打印出来:
data[row][d['classname']]
我得到了我想要更新的元素。我在这里找不到任何明显的东西。 我应该对整行进行更新吗?所以更新整个字典 目前的位置?
编辑:
我还有问题。首先,我误读了你的好答案lyschoening。我以为你的意思是值()不会返回一个可写的列表,愚蠢的我。稍后在代码中完成模型的保存并按预期工作。但是我仍然在我尝试更新的位置上的字典问题根本没有更新:/
答案 0 :(得分:0)
好的我发现了什么问题。
django values()不会返回字典列表,因为它看起来只是一个ValuesQuerySet。 因此,不可能对此列表进行更新,就像使用常规列表一样。
我所要做的只是把它变成一个词典列表:
updates = [item for item in data]