models.pyが分かれば、データをDjangoで保存するのは簡単。データを使うWebアプリケーションをどんどん作れるようになります。
今回はmodels.pyってそもそもなんなのか?書きかたと使いかたを話していきましょう。
models.pyってそもそもなに?
・簡単に言うと...
データを入れる箱を作ったり、編集したりするファイル。
たとえば、人の情報を入れる箱をつくるとする。そして、箱の中には次のように情報を入れられるように小さい箱をそれぞれ用意する。
・箱にいれる小さい箱
- 名前
- 性別
- 年齢
- 出身地
・コードを見てみましょう
class Person(models.Model): name = models.CharField(max_length=20) sex = models.CharField(max_length=5) age = models.IntegerField() birthplace = models.CharField(max_length=10) def __str__(self): return self.name
これでPerson(人)という箱(class)の中に...次の情報が入った小さい箱が用意される。
- name(名前)
- sex(性別)
- age(年齢)
- birthplace(出身地)
この小さい箱にそれぞれ対応したデータを入れることが可能。たとえば、次のような感じで。
・箱(人)の中に、小さい箱を用意する感じ
name(名前) | sex(性別) | age(年齢) | birthplace(出身地) |
---|---|---|---|
佐藤 | 男 | 26 | 東京都 |
田中 | 女 | 20 | 福岡県 |
後藤 | 女 | 22 | 愛知県 |
models.pyの書きかた
models.pyの書きかたはけっこう簡単。たとえば次のmodels.pyを見ていこう。
class Person(models.Model): name = models.CharField(max_length=20) sex = models.CharField(max_length=5) age = models.IntegerField() birthplace = models.CharField(max_length=10) def __str__(self): return self.name
・models.pyの書きかたの基本
- classを使う
- models.Modelを使う
- def __str__を設定する
・models.pyの書きかたはclassの中に...
「データ名 = models.フィールドの型(オプション)」で書きかたはOK。CharFieldやEmailFieldでは最大の文字数を設定することが重要。
・フィールドの型って?
文字列だったり、数値だったり、ありなしのBoolean型だったり出力したい型を指定しておくこと。
・フィールド型の一覧は?
モデルフィールドリファレンス | Django ドキュメント | Djangoをどうぞ。
models.pyの使いかた
・models.pyには2つの使いかたが...
- models.py→views.pyにデータを渡す
- forms.py→models.py→views.pyにデータを渡す
パターン1: models.py→views.py
もともと入ってるデータを見せたい場合とか、他のサイトから情報をとってきて見せたい場合に使うパターン。
・models.py→views.pyのパターンを使うとき
- 求人情報
- 株式チャートの情報
- 他サイトの数値データ
パターン2: forms.py→models.py→views.py
サイトに来てくれた人に対してなにか入力してもらってデータを保存したい場合に使うパターン。
・forms.py→models.py→views.pyのパターンを使うとき
- 会員登録
- アンケート
- 個人情報の入力
・forms.pyってなに?
【入門】Django/forms.pyの役割と使いかた -Windowsで解説してるのでどうぞ。
まとめ: models.pyでデータを使ったアプリに挑戦しよう
- models.pyは、データを入れる箱を作ったり、編集したりするファイル
- 他サイトからデータを保存するパターン
- サイトに来てくれた人からデータを保存するパターン
models.pyが分かれば、データをDjangoで保存するのは簡単。どんどんアプリケーション作ってみよう。
・Djangoをもっと学習したいなら
・DjangoのMTVという考えかたを知っていますか?
DjangoにとってMTVは切っても切れない存在。【基礎】Django/MTVモデルを知って効率的にWebアプリを作ろうで解説してるのでどうぞ。