这个NDB查询的兼容版本是什么?

Gio*_*oia 4 google-app-engine app-engine-ndb

也许这是错的,但我总是对我的应用使用此查询:

cme_only = Comput.all().filter('__key__ =', cid.key())
Run Code Online (Sandbox Code Playgroud)

这个NDB查询的兼容版本是什么?元数据查询非常不同..

编辑:cid是一个实体,cme_only是一个可迭代的,我肯定只有一个值

cid = Comput.get_by_id(int(self.request.get('id')))
cme_only = Comput.all().filter('__key__ =', cid.key())
Run Code Online (Sandbox Code Playgroud)

然后在模板中:

{{ for Comput in cme_only }}
Run Code Online (Sandbox Code Playgroud)

我不喜欢它,但它已经足够了

Gui*_*sum 7

不需要元数据查询.NDB拼写查询的方式__key__如下:

ModelClass.query(ModelClass._key == key_value)
Run Code Online (Sandbox Code Playgroud)

也就是说,就像通过过滤来查询属性foo一样ModelClass.foo == value,ModelClass._key是表示密钥的伪属性.

其他海报是正确的,如果你只有一个实体给定其全键,使用get()Key对象上的方法更好(更快,更便宜).此外,如果e是一个实体(模型实例),在NDB,关键是没有e.key(),但e.key(或e._key-是的,这就是我在上面提到的相同_key属性,它可以作为一个类属性和实例属性).

事实上,如果你有一个urlsafe密钥(例如'agFfcg4LEghFbXBsb3llZRgDDA'),将其转换为Key对象的方法是ndb.Key(urlsafe='agFfcg4LEghFbXBsb3llZRgDDA').

祝好运!