我正在使用django-mongodb-engine为Android应用程序编写基于Django的后端,我正在尝试从PUT请求获取数据以更新数据库中的记录。我正在获取用户名并使用该名称(成功)过滤用户对象的数据库,但保存功能似乎没有保存更改。我可以说这些变化没有被保存,因为当我进入mLab的在线数据库管理工具时,变化不存在。
以下是代码:
existing_user = User.objects.filter(userName = user_name)
if existing_user == None:
response_string += "<error>User not identified: </error>"
elif (existing_user[0].password != user_pwd):
response_string += "<error>Password error.</error>"
#if we have a validated user, then manipulate user data
else:
existing_user[0].star_list.append(new_star)
existing_user[0].save()
我没有收到任何错误消息,但数据保持不变。上述之后,star_list仍为空。事实上,作为测试,我甚至尝试用以下内容替换上面的else子句:
else:
existing_user[0].userName = "Barney"
existing_user[0].save()
在此调用之后,existing_user [0] .userName仍然是它的原始值(“Fred”,而不是“Barney”)!
答案 0 :(得分:0)
找到这个问题的答案。我不确定为什么它没有按照发布的方式工作,但是尝试通过列表访问对象时出现问题......换句话说,以下操作不起作用:
existing_user[0].userName = "Barney"
existing_user[0].save()
但是这样做了:
found_user = existing_user[0]
found_user.userName = "Barney"
found_user.save()
基于我对Python列表的理解,任何一个都应该是相同的...但也许一些python天才可以解释为什么它们不是?