无法在本地devserver(1.5.0)上重现此错误,但当我们将代码部署到google时,它就开始出现了?在线版的GAE是当前的错误吗?在
问题就在这里。如果我们先这样做:
proj = Project(created_by=users.User(email='test@sample.com'))
proj.put()
user = users.get_current_user()
print user.email() #this prints test@sample.com (actual email not used)
这将获取0个结果:
^{pr2}$但这会得到实际应该得到的结果:
projs = GqlQuery("SELECT * FROM Project where created_by = USER('%s')"%user.email()).fetch(500)
你知道这里发生了什么吗?在
正如我所看到的,您正在创建一个用户对象并将其持久化到created\u中。 i、 e
您正在创建一个用户。用户带有电子邮件的对象'test@sample.com网站'. 您将同样的内容保存到创建的项目中。当您将其与获取当前登录用户的
users.get_current_user()
进行比较时反对。那这就是为什么它不获取任何对象。而在gql中,您再次使用传递的email创建一个User对象,这显然将与project中持久化的User对象相匹配。在我想你应该做这样的事
^{pr2}$筛选器语法不正确。您需要显示运算符(在本例中,“=”)。在
发生这种情况是因为您创建的
User
对象具有匹配的电子邮件地址,但没有匹配的用户ID(因为它没有),因此在查询结果中不会显示为匹配项。你目前的方法有几个问题:一般来说,查询用户属性是危险的,并且可能会导致这样的问题。我建议将用户的user_id属性放在一个字符串中,然后对其进行查询。在
相关问题 更多 >
编程相关推荐