モデルの使い方がいまいち覚えられないので、ちょっとまとめてみることにした。Djangoのドキュメントってちょっと分かりにくいよねぇ。Pythonのドキュメントも分かりにくいけど。チュートリアルなのか、リファレンスなのか、ごちゃごちゃになっているからかもしれない。使い方2では内部結合・外部結合について書くつもりだけど、納得できるまで書かないので、書けない可能性もある。エンティティどうしが結合する場合、Entity Frameworkみたいに新しいエンティティを作らないといけないのだろうか。それとも合成せずに簡単にかけるのか。
単純なSELECT文
まずは、簡単なSELECT文の使い方をまとめておく。ホントはGROUP BYとかもあったんだけど、annotateの使い方も良く分かってないので、これも後日書く予定。
以下の例は基本的にQuerySetが返ってくる。一部辞書のリストとか、タプルのリストが返ってくるものもある。オブジェクトを取得したい場合はfilterじゃなくて、getを使うこと。getは1レコードだけを取得する場合のみ使用可能なので、注意が必要。
全件取得
カラム指定(辞書のリストを返す)
カラム指定(タプルのリストを返す)
検索条件
除外条件
ソート
ランダムソート
Distinct
上位n件
上位n件(offset a)
件数
Null
評価結果が常に空のリストであるクエリセットであるEmptyQuerySetを返す。
参考
Django v1.0 documentation