Slim3ではモデルにSchemaVersionという属性が自動的に付与されるらしい。
モデルのスキーマが変更したときに、SchemaVersionの値をみて、古いスキーマのレコードを新しいスキーマに更新するために使用するためのものらしい。
- appengine ja night 5 BT SchemaVersionの薦め
- Fragile Code: schemaVersionプロパティ
- 404 shin1のつぶやき ないわー Not Found: #appengine でスキーマ変更に対応するバッチ処理を行う
いつか役に立つことがあるかもしれないので、スキーマバージョンを記録する属性を付与することにした。
class MyModel(db.Model):
schemaversion = db.IntegerProperty(default=1)
ModelFormを使用している場合は、schemaversionを表示しないようにexclude属性で指定する。
class MyForm(ModelForm):
class Meta:
model = models.MyModel
exclude = ('schemaversion')
スキーマバージョンの有用性が認められたら、モデルやフォームに一つ一つschemaversion属性を設定しなくてもすむように工夫したい。