インターン18日目を終えました、清瀬です。
16日目からの3日間、DjangoのSerializer をつくっていたので学んだことを軽くまとめようと思います。
DjangoにはSQLを書かなくてもすむように、ObjectManagerというものが用意されています。
そのため簡単な処理はSQLを書くことなくDBをいじれるのですが、単純な処理に限られてしまいます。
そこで直接SQLを実行できるように、いくつかのメソッドが用意されています。
その一つがextra関数です。
extra
(select=None, where=None, params=None, tables=None, order_by=None, select_params=None)¶
個人的にはまったのが、whereです。
tablesで別のテーブルを参照できるようになるのですが、
whereの引数に
1. 二つのテーブルを関連させる条件を書く( SQLでのON句のようなもの)
2. 絞り込みのためにつかつ(SQLでのWHERE句)
この二つのどちらになるのかが分からずに物凄い時間を費やしたのですが、
結論はなんと両方OKなんだそうです。
個人的には、どうして両方OKなのかがいまいちピンときていません。
もしかしたらSQLの理解不足かもしれないので、時間があるときに調べてみたいなと思います。