假设有一个看起来像这样的 ndb.Model:
class Foo(ndb.Model):
bar = ndb.StringProperty()
我的问题是,如果我的唯一输入是 Foo.query(),我如何才能将模型作为该查询所属的对象获取?
def query_to_model(query):
# some magic
return model
Foo.query().kind 将模型名称作为字符串返回,但我没能找到将其作为对象获取的方法。
以下使用 eval 工作,但仅当模型定义在同一文件中时:
def query_to_model(query):
return eval(query.kind)
我想要比这更通用的东西。
请您参考如下方法:
使用此模型定义导入代码后,列表 ndb.Model._kind_map 应该包含它。这是魔术:
def query_to_model(query):
return ndb.Model._kind_map[query.name]
