django-mongodb-engine无法更新对象

时间:2016-08-13 05:53:57

标签: python django mongodb

我正在使用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”)!

1 个答案:

答案 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天才可以解释为什么它们不是?