Google应用引擎字符串到实体

时间:2012-07-27 08:34:11

标签: python google-app-engine

我想将任何字符串转换为现有的实体。是否可以编写 convertTo Entity ()函数,如下所示?

class Personel(db.Model):
  name=db.StringProperty()


class IsEntityExists(webapp.RequestHandler):
  def get(self):
    entity="Personal"
    Entity=entity.convertToEntity()
    Entity.all()

2 个答案:

答案 0 :(得分:1)

我想知道这个问题是否只是要求以某种方式查找模型类的名称,当它已经被导入时。您可以轻松地执行此操作(但仅在已导入时才执行此操作!),如下所示:

cls = db.class_for_kind("Personel")
... cls.all() ...

NDB中的等价物:

cls = ndb.Model._kind_map["Personel"]
... cls.query() ...
祝你好运!

PS。不,它不会进行拼写纠正。 : - )

答案 1 :(得分:0)

仅当您为模型构建加载程序时...例如:

from app import model_loader

class IsEntityExists(webapp.RequestHandler):
  def get(self):
    Entity=model_loader("Personal")
    Entity.all()

而model_loader函数将搜索文件夹结构(python模块)以查找已定义的模型..例如,您有文件夹结构:

models/
personal.py
other_model.py
user.py

因此,model_loader(" Personal")将导入personal.py并提取"个人"该模块中的类,允许您使用该类执行任何操作 - 如果它找到并加载它。

当然你必须对加载器进行编码。

但是,如果类(已定义的模型)与代码位于同一文件中,则可以在本地区()上搜索"个人"

def load_model(name):
    local = locals()
    try:
      return local[name]
    except KeyError:
      return None