GAE PolyModelでの不思議な挙動とその解消法
Kay Framework Dev Lounge #6に来ています。
目から鱗の話ばかり。
ずっと抱えていたGAEでの不思議な挙動に悩まされていましたが、見事に解決しました。
どういうものかと言いますと
polymodel.PolyModelで Aというモデルを用意し、それを利用したBモデルを用意します。
BにしかないプロパティXを用意して、必須オプションをつけます。
この状態でA.get_by_key_name(1)とかすると、AにはないXプロバティが必須だ、というエラーが発生。
ツイートしてみても他からの反応はない状態でした。
ところが今日、Googleの松尾さんに直接質問しましたら
「もしかしてもともとdb.ModelだったAにデータを突っ込んだ後に、AをPolyModelにしませんでしたか?」
と、聞かれました。
実は全く持ってその通りのシナリオだったのです。
そこで松尾さんから「A.all()で全件フェッチして、すべてをただput()してみてください」とアドバイスいただきましたのでそのようにすると、エラーはなくなりました!
bulkloaderで用意するようなモデルの場合、PolyModelとしてデータをインポートするようなことも多分できるというお話でしたが、やり方はまだわかりません。
わかりましたらこちらにまた書きたいと思います。