获取 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中注册的实体类型
如何获取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中注册的实体类型