Djangoのオブジェクトの取得タイミング
Google App EngineではDjangoという
フレームワークを使っているのだが、
DBまわりで想定した動きがちょっと違った。
オブジェクトの取得のタイミングが
遅延型なのだ。
オブジェクトを取得する際はクエリセット
を作成するのだが、作成時には
データベースへのクエリの実施は行われない。
で、いつ実施するのかというところなのだけど
クエリセットに対してイテレーション操作を行ったときに
データベースへのクエリが実行されるのだ。
(その他いくつかの操作時にクエリが実施される)
最初知らなかったので
クエリセットのデータがいつのまにか更新されていて
なんでだ?と思ったらそれが原因だった。
ドキュメントはちゃんと読んでおくべきですね。
反省。
参考:Django データベース API リファレンス
http://michilu.com/django/doc-ja/db-api/