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を増えちゃうってことだな。