我想将任何字符串转换为我现有的实体。是否可以编写如下的convertToEntity () 函数?
class Personel(db.Model):
name=db.StringProperty()
class IsEntityExists(webapp.RequestHandler):
def get(self):
entity="Personal"
Entity=entity.convertToEntity()
Entity.all()
我想将任何字符串转换为我现有的实体。是否可以编写如下的convertToEntity () 函数?
class Personel(db.Model):
name=db.StringProperty()
class IsEntityExists(webapp.RequestHandler):
def get(self):
entity="Personal"
Entity=entity.convertToEntity()
Entity.all()
我想知道这个问题是否只是要求以某种方式查找给定名称的模型类,当它已经被导入时。你可以很容易地做到这一点(但只有当它已经被导入时!),如下:
cls = db.class_for_kind("Personel")
... cls.all() ...
NDB 中的等价物:
cls = ndb.Model._kind_map["Personel"]
... cls.query() ...
祝你好运!
PS。不,它不会进行拼写校正。:-)
仅当您为模型构建加载器时...例如:
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