用户对象的GAE ndb查询

时间:2012-08-22 22:02:41

标签: google-app-engine google-cloud-datastore

for car in  Car.query().fetch():
        print car.owner == users.get_current_user()

按照预期,这将为当前用户拥有的所有汽车打印True。

for car in  Car.query(Car.owner == users.get_current_user()).fetch():
        print car

虽然当前用户拥有多辆汽车,但这不会返回任何结果。为什么呢?

2 个答案:

答案 0 :(得分:1)

在数据存储中存储用户对象充满了问题;失败的查询只是一个例子(不,抱歉,我不知道为什么它在你的情况下确实失败了。)

你最好只存储“用户ID”(即users.get_current_user()。user_id(),字符串)或电子邮件地址 - 这取决于你认为如果用户更改电子邮件会发生什么与其Google(GMail)帐户相关联的地址。 user_id保持不变,电子邮件地址(显然)会发生变化。

答案 1 :(得分:0)

我已经添加了我拥有的新车,并且查询正在按预期选择这些车。这不能解决技术问题(也就是说,我仍然不明白为什么查询不起作用) - 但它确实解决了我的实际问题。