目前我使用如下代码 -
Price.query().fetch(keys_only=True))
Price
这里是硬编码的名称。有没有办法像:
def get_kind_keys(kindname):
return Kind(kindname).query().fetch(keys_only=True)
答案 0 :(得分:4)
ndb
为所有型号保留dict
,您可以亲自试用:
from google.appengine.ext import ndb
print ndb.Model._kind_map
您的代码段最终会是这样的:
def get_kind_keys(kindname):
return ndb.Model._kind_map[kindname].query().fetch(keys_only=True)
答案 1 :(得分:2)
ndb.Query
在其构造函数中接受一种。您可以将get_kind_keys
实现为:
def get_kind_keys(kindname):
return ndb.Query(kind=kindname).fetch(keys_only=True)
使用_kind_map
更有吸引力的是,如果您使用PolyModel
,则在模型上调用query()
将正确过滤所需的类。否则,这两种解决方案是等效的。您可以查看Model._query
的{{3}},看看到底有什么区别。