Skip to main content
 首页 » 编程设计

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

2025年05月04日11bonelee

假设有一个看起来像这样的 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]