0

UserModel.query ( self.login == 登录,self.name == 名称,祖先= 祖先键)

这是从GAE 数据存储中检索数据的Python语句。你能解释一下为什么我对祖先使用一个等号(=),而对其他属性使用两个等号(==)吗

当我使用两个等号时,类似的语句self.login == login应该返回一个布尔值,然后将其传递给函数。但这样不行,对吧?

4

2 回答 2

1

对于您问题的第二部分:

python 允许您为一个类重载“等于”(以及小于和大于等)(并且您可以让它返回任何内容,而不仅仅是真/假),而 ndb 已经为 Properties 完成了返回查询过滤节点。检查来源:https ://code.google.com/p/appengine-ndb-experiment/source/browse/ndb/model.py#858

于 2013-07-26T17:34:05.977 回答
1

您正在将比较与作业混为一谈。

请参阅文档https://developers.google.com/appengine/docs/python/ndb/queries#filter_by_prop

为这种 Kind 创建查询对象的工厂接受一个祖先参数,该参数定义给定祖先的查询范围。它还接受许多定义过滤器的表达式。的用途self.login == login是定义过滤器的表达式。

我不明白你问题的最后一部分。

定义查询的另一种方法是

UserModel.query(ancestor=ancestor_key).filter(self.login==login)

在 query() 中提供过滤器的能力只是这种形式的捷径。

于 2013-07-26T09:53:44.987 回答