如何更新模型

时间:2011-05-16 07:52:36

标签: python google-app-engine

假设我有这样的模型定义:

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实体。但我还想更新已有的实体,以便它们包含这两个新字段并用值填充它们。一个已经存在的实体会自动获取这两个字段,所以当我引用它们时,它会给我空字段还是会导致错误?我想我必须创建一个帮助函数,它将遍历所有现有实体并设置新的字段值,对吧?那么,我应该记住什么以及如何更好地进行此模型更新?我认为有时会随着应用程序的出现而发生,所以我认为有一些直截了当的流程来做这件事会很有用。

2 个答案:

答案 0 :(得分:3)

GAE文档(文章部分)中涵盖了这个确切的场景:

Updating your model's schema.

基本上只需更改模型定义,然后执行一些操作为所有现存实体提供默认值。有几种方法可以完成第二部分 - 文章描述了一个。

答案 1 :(得分:2)

没有现有实体不会自动获取这两个字段,也不会将其视为无。在现有对象中访问这些字段时,将导致错误。现在只有解决方案是使用remote_apy并编写自己的脚本来更新现有记录。这不是什么大问题,编写脚本来获取数据存储区中的所有记录,并为新属性设置一些默认值。

  1. Setting_Up_remote_api
  2. Update_schema