[python] DJangoでAPI的なものを作る その2 モデルを作る

Djangoのモデルとは、いわゆるDBのテーブルの事。
DJangoを使わない場合は、テーブル設計をして、テーブルへのDAOを作ったりしていかないと行けないですが、このモデルを使用すると
リレーションやらその辺を深く意識せずにテーブルを作成することが出来ます。

前回作成した polls の中に上のようなスクリプトを書きました。
models.py に書かれたクラス1つがDBのテーブル1つ
クラスの変数として定義している ~Fieldは、テーブルのフィールドに相当しています。
例)住所録=テーブル 名前・住所などの要素=フィールド
今回は、かんたんなタスク管理(ステータスと、内容があるのみ)をつくってみます。

Taskのステータスは、いくつかの要素からチェックボックスやコンボボックスのようなもので
選択式、選択肢は上限できるようにしたいのでTaskStatus部分は別テーブルとして定義してあげます。
TaskStatus側の ForeignKey は、多対一の関係を定義するもので、
TaskStatusの複数ある要素のうち、1つを使いたいような場合に紐付けする機能をもっています。

定義が終わったら、このmodelsをDBのテーブルに反映します。

反映するときには、上のコマンドを実行します。
makemigrations を実行すると、アプリのフォルダ内のmigrationsにマイグレーションファイルとよばれる .py が生成されます。

中身はこんな感じになってます。
マイグレーションとは、
プログラムやデータ、OSなどの環境やプラットフォームを移行、変換すること。
という意味で、DJangoの場合は models.py → DBへの変換のことをマイグレーションと呼ぶようです。
migrationファイルを作成したあとに migrate を実行すると、DBに変更が反映されます。

API部分を作るまえに、DJangoのAdmin画面機能を使用して
テーブルがちゃんと作れているかを確認してみます。

まず、admin.pyを編集します。

Admin画面で確認・編集したいmodelsを、上のように admin.site.register(モデルクラス名)でセットしてあげます。

さいごに、Admin画面に入るためのユーザーを作成します。

ユーザー → メールアドレス(XXX@XXX.XXの形式なら適当でOK) → パスワード → パスワード(再度) の順で入力します。

できたら、サーバーを起動して、
http://127.0.0.1:8000/admin/
にアクセスしてみます。

キャプチャ

特に何も作らなくても、簡単な管理画面がつくれてしまうのもDjangoの良いところです。

addTask

Taskのタブの中を見ると、modelsで定義したフィールドがセットできるようになっています。
Status部分はタブ選択と + で要素が追加出来るようになっています。

addTask_B

Taskの+のところで要素を追加した後に、TaskStatusタブを見ると
追加された要素が表示されています。

次回はURLからアクセスして登録する所までを作るまでで
つづく!

コメントを残す

メールアドレスが公開されることはありません。


*