获取 GAE Python 中所有 NDB 模型名称(class 名称)的列表

Get list of all NDB model names ( class names ) in GAE Python

如何获取GAE中所有NDB模型名称的列表Python?

所有 NDB 模型都是 Python 类 继承自 ndb.Model。我认为我们可以使用此信息来获取所有模型的名称。

class BK (ndb.Model): 
    property_1 = ..

我尝试了下面的 (borrowed) 代码但没有成功:

尝试 1

logging.info ( [ cls.__name__ for cls in globals()['ndb.Model'].__subclasses__() ] )

它导致错误:

KeyError: 'ndb.Model'

尝试 2

logging.info ( [ cls.__name__ for cls in globals()['Model'].__subclasses__() ] )

它导致错误:

KeyError: 'Model'

幸运的是,在这种情况下要容易得多:

from google.appengine.ext import ndb


class Test(ndb.Model):
    pass

print ndb.Model._kind_map

产生以下输出:

{'Test': Test<>}

除了Jaime的回答,还有metadata API,可以告诉你已经在datastore中注册的实体类型