1

我需要存储数据,问题是我只知道与种类名称相同的模型名称

class Tasks(ndb.Model):
    title = ndb.StringProperty()

如果我已经有了钥匙,我可以做到

model = ndb.Key(urlsafe=key).get()
model.title = "new tasks"
model.put()

现在我需要存储实体,我该怎么做?谢谢

4

3 回答 3

1

让您的用户能够实例化和存储任何类型的模型可能是一个非常糟糕的主意,因此进行直接映射可能是错误的方法。此外,它将您的内部数据存储表示直接耦合到您的外部 API,这带来了额外的限制。

相反,您可能想自己定义一个映射,如下所示:

model_map = {
    'external_name': model.MyModel,
    # ...
}
于 2012-04-05T05:53:25.933 回答
0
ndb.Model._kind_map['Tasks'](title='...')

或者更通用的东西,比如

eval('Tasks')(title='...')

在这两种情况下,您都需要事先导入模型。

或者

getattr(models, 'Tasks')(title='...')

ifmodels是模型所在的 python 模块。

于 2012-04-04T12:59:22.240 回答
0

对于数据库

from google.appengine.ext.db import class_for_kind
class_for_kind(model_name) -> returns model Class

对于新开发银行

from google.appengine.ext import ndb
ndb.Model._kind_map[model_name] -> returns model Class
于 2015-03-27T20:25:27.793 回答