gae アプリ 開発メモ

Google App Engine アプリの開発メモ / 言語: python, javascript / ビギナー

db.Expandoの動的プロパティは必ずindexed=True

setattr() で indexed = False なプロパティを突っ込めばイケるか?
なんて期待は簡単に裏切られた。

from google.appengine.ext import db

class Person(db.Expando):
    pass

person = Person()
name_value = db.StringProperty(required = True, indexed = False)
setattr(person, 'name', name_value)
person.put()

ドキュメントのExpando クラスに書いてある通りなんだけどね。

動的プロパティでは、Property インスタンスを使用して、検証の実行、デフォルトの設定、値への自動ロジックの適用などを行うことはできません。動的プロパティは、データストアのサポートされる型の値を格納するだけです。

要はExpandoを使うと、DataStoreのWriteOpsを増えちゃうってことだな。