1

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

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


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

2 回答 2

1

我想知道这个问题是否只是要求以某种方式查找给定名称的模型类,当它已经被导入时。你可以很容易地做到这一点(但只有当它已经被导入时!),如下:

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

NDB 中的等价物:

cls = ndb.Model._kind_map["Personel"]
... cls.query() ...

祝你好运!

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

于 2012-07-27T21:35:13.840 回答
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 并从该模块中提取“Personal”类,允许您对该类执行任何您想要的操作——如果它找到并加载它。

当然,您必须编写加载程序。

但是,如果类(定义的模型)与代码在同一个文件中,您可以在 locals() 上搜索“个人”

def load_model(name):
    local = locals()
    try:
      return local[name]
    except KeyError:
      return None
于 2012-07-27T10:57:10.623 回答