更新词典列表中的单个值

时间:2014-03-04 14:07:00

标签: python django dictionary

我有一个网页,我将乘客信息列表显示为一个表格。这是常见的东西:到达时间,航班号等。

我已对表格进行了编辑,因此当用户点击某个包含信息的列时,他可以编辑此列。当他最终点击确认时,我只将已编辑的列与值和行号一起发送到视图,该视图假设从我发送的数据中找到列表行,找到密钥并更新原始值。

我从编辑列中获得的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。我以为你的意思是值()不会返回一个可写的列表,愚蠢的我。稍后在代码中完成模型的保存并按预期工作。但是我仍然在我尝试更新的位置上的字典问题根本没有更新:/

1 个答案:

答案 0 :(得分:0)

好的我发现了什么问题。

django values()不会返回字典列表,因为它看起来只是一个ValuesQuerySet。 因此,不可能对此列表进行更新,就像使用常规列表一样。

我所要做的只是把它变成一个词典列表:

updates = [item for item in data]