Google app engine 如何检查db.Model是否更改?
我想检查db.Model是否已更改。怎么做 例如,一年前我设计了这样的模型,并保存了:Google app engine 如何检查db.Model是否更改?,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,我想检查db.Model是否已更改。怎么做 例如,一年前我设计了这样的模型,并保存了: class DeleteMe(db.Model): a = db.StringProperty() key = db.Key().from_path('DeleteMe', 'a') a = DeleteMe(key = key) 一年后,我添加了一些新的和更改默认属性: class DeleteMe(db.Model): a = db.StringProperty(default = 'zero
class DeleteMe(db.Model):
a = db.StringProperty()
key = db.Key().from_path('DeleteMe', 'a')
a = DeleteMe(key = key)
一年后,我添加了一些新的和更改默认属性:
class DeleteMe(db.Model):
a = db.StringProperty(default = 'zero')
b = db.StringProperty(default = 'cat')
key = db.Key().from_path('DeleteMe', 'a')
a = DeleteMe.get(key)
当我阅读模型a==None
和b==cat
时,但在数据存储中b==None
如何检查数据存储中的b==None
我使用未记录的
ea=a._entity.get('b')
检查ea!=a、 a
什么是交替记录方法。如果b==None使用db或ndb,则通常无法检查
你所建议的可能是最好的方法。正如您所发现的,底层原始实体甚至没有b
属性,因此默认值生效。此外,也没有可供查询的索引
通常,在处理模式迁移时,您必须访问每个实体并对其进行更新
在某些情况下,您可以延迟执行此操作(即仅在下次获取实体时更新),然后使用您的方法确定b
的实际值或不存在,以及实体是否需要更新
您可以使用实体中的版本属性来帮助管理复杂的架构更新
定义了version属性后,如果b==“cat”
,则无关紧要,因为您将知道是否需要基于实体架构的版本写回/更新对象 您应该检查此建议: