当我的唯一输入是ndb.Query时,如何获取ndb.Model?

Lip*_*pis 1 python google-app-engine app-engine-ndb

让我们说有ndb.Model这样的事情:

class Foo(ndb.Model):
  bar = ndb.StringProperty()
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我唯一的输入是Foo.query()如何将模型作为此查询所属的对象?

def query_to_model(query):
  # some magic 
  return model
Run Code Online (Sandbox Code Playgroud)

Foo.query().kind模型的名称作为字符串返回,但我没有设法找到将其作为对象的方法.

以下工作原理使用eval,但仅当模型在同一文件中定义时:

def query_to_model(query):
  return eval(query.kind)
Run Code Online (Sandbox Code Playgroud)

我想要比这更通用的东西.

Gre*_*reg 8

使用此模型定义导入代码后,列表ndb.Model._kind_map应包含该代码.这是魔术:

def query_to_model(query):
  return ndb.Model._kind_map[query.name]
Run Code Online (Sandbox Code Playgroud)