假设我有这样的模型定义:
class Image(db.Model):
id = db.StringProperty()
url = db.URLProperty()
现在我想在这个模型中添加一些字段,使它看起来像这样:
class Image(db.Model):
id = db.StringProperty()
url = db.URLProperty()
width = db.IntegerProperty()
height = db.IntegerProperty()
因此,这个新模型将适用于新添加的Image
实体。但我还想更新已有的实体,以便它们包含这两个新字段并用值填充它们。一个已经存在的实体会自动获取这两个字段,所以当我引用它们时,它会给我空字段还是会导致错误?我想我必须创建一个帮助函数,它将遍历所有现有实体并设置新的字段值,对吧?那么,我应该记住什么以及如何更好地进行此模型更新?我认为有时会随着应用程序的出现而发生,所以我认为有一些直截了当的流程来做这件事会很有用。
答案 0 :(得分:3)
GAE文档(文章部分)中涵盖了这个确切的场景:
基本上只需更改模型定义,然后执行一些操作为所有现存实体提供默认值。有几种方法可以完成第二部分 - 文章描述了一个。
答案 1 :(得分:2)
没有现有实体不会自动获取这两个字段,也不会将其视为无。在现有对象中访问这些字段时,将导致错误。现在只有解决方案是使用remote_apy并编写自己的脚本来更新现有记录。这不是什么大问题,编写脚本来获取数据存储区中的所有记录,并为新属性设置一些默认值。