【发布时间】:2015-04-08 23:34:52
【问题描述】:
我目前在 NDB 中有一个模型,我想更改属性名称而不必触及 NBD。假设我有以下内容:
from google.appengine.ext import ndb
class User(ndb.Model):
company = ndb.KeyProperty(repeated=True)
我想要的是更像这样的东西:
class User(ndb.Model):
company_ = ndb.KeyProperty(repeated=True)
@property
def company(self):
return '42'
@company.setter
def company(self, new_company):
#set company here
有没有一种相对无痛的方法来做到这一点?我想要使用属性 getter/setter 的便利性,但考虑到当前的实现,我想避免接触底层数据存储。
【问题讨论】:
-
我不确定我是否理解您为什么要更改 NDB 中的属性名称,但仍然在代码中使用旧名称。您打算将旧名称用于其他名称吗?或者它只是一个坏名字?也许理解这一点可以帮助我们帮助你:)
-
据我了解,模型保存在ndb中,字段为“company”。在我的应用程序中,我偶尔会在模型中获取和设置公司,但我想在设置之前添加一些检查,我认为使用属性设置器来做一些检查会很方便。但是,这将需要代码的其他位以不同的名称访问它,或者我可以更改模型中的字段名称并让其他人以相同的方式访问它。我正在查看是否可以保留字段名并将其保留在模型中。
-
如果你正在做“检查”,你可能想要使用验证器,它允许你在设置它们之前验证和/或强制值...在此处搜索验证器:cloud.google.com/appengine/docs/python/ndb/properties
标签: python google-app-engine google-cloud-datastore app-engine-ndb