无法访问dict值indjango视图

时间:2014-05-07 03:55:33

标签: python arrays loops object dictionary

我想保存从javascript通过ajax传递给我数据库的对象数组。这是我的观看代码:

data2 = json.loads(request.raw_get_data)
    for i in data2:
        print(key)
        obj = ShoppingCart(quantity = i.quantity , user_id = 3, datetime = datetime.now(), product_id = i.pk)
        obj.save()

    return render_to_response("HTML.html",RequestContext(request))

在第一行之后,我在我的字典中得到这个: [{'model': 'Phase_2.product', 'fields': {'name': 'Bata', 'category': 2, 'quantity': 1, 'subcategory': 1, 'count': 2, 'price': 50}, 'imageSource': None, 'pk': 1}]

(现在阵列中只有一个对象)

我希望能够访问数量,ID等单个字段,以便将数据保存到我的数据库中。当我调试此代码时,它在'i'上给出了名称错误。我也尝试访问过这样的字段:data2[0].quantity但它会出现此错误:{AttributeError}dict object has no attribute quantity

编辑代码:

for i in data2:
        name = i["fields"]["name"]
        obj = ShoppingCart(quantity = i["fields"]["quantity"] , user_id = 3, datetime = datetime.now(), product_id = i["fields"]["pk"])
        obj.save()

2 个答案:

答案 0 :(得分:1)

它可能会帮助您以正确的格式显示返回的dict:

[
    {
     'model': 'Phase_2.product',
     'fields': {
                'name': 'Bata',
                'category': 2, 
                'quantity': 1, 
                'subcategory': 1, 
                'count': 2, 
                'price': 50
               },
     'imageSource': None,
     'pk': 1
    }
]

您出错的最可能原因是您尝试访问内部'fields'字典的值,就好像它们属于外部i字典一样。

# Incorrect
i["quantity"]
# Gives KeyError

# Correct
i["fields"]["quantity"]

修改

您的更新中存在同样的问题:

# Incorrect
i["fields"]["pk"]

# Correct
i["pk"]

"pk"字段位于外部字典中,而不是内部"fields"字典。

答案 1 :(得分:0)

您可以尝试:

i['fields']['quantity']

json.loads()返回一个字典,应该通过键访问。