ブログモデルの作成
前回の記事で、アプリケーションディレクトリ(Blog_app)にtemplatesディレクトリを作成し、そのパスを通してDjangoに認識させた。
今回はmodels.pyでモデルを作成する手順についてまとめる。
モデルはデータベースにおけるテーブルに対応する。
モデルにはフィールドをもたせることができる。
フィールドはデータベースにおける各項目(カラム)に対応する。
今回はブログアプリを作成するので、まずはブログモデルを作成する。
モデル名(テーブル名)はブログとして、
データベースのテーブルにすると以下のようなイメージになる。
このテーブルはID、タイトル、内容、作成日の4つの項目(カラム)を持つ。この5項目にはデータの型や空欄の許可など設定が必要なので、models.pyで作成していく。
現在のディレクトリ構成は以下の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
デスクトップ └Blog ├Blog_app │ ├migrations │ ├__init__.py │ ├adming.py │ ├apps.py │ ├models.py │ ├tests.py │ ├views.py │ ├urls.py │ ├templates │ └Blog_templates ├db.sqlite3 ├config │ ├・・・ │ └urls.py ├env_blog └manage.py |
Djangoのモデルの各フィールドと各フィールドのオプション一覧は以下にまとめている。
前回:【Django】アプリケーション内にurls.pyとtemplatesディレクトリを作りパスを通す
models.pyでモデルを定義してDBのテーブルを作成する手順
~デスクトップ/Blog/Blog_app/models.py
1 2 3 4 5 6 7 8 |
from django.db import models # Create your models here. class Blog(models.Model): #IDは自動作成される title = models.CharField(max_length=100, verbose_name="タイトル") content = models.TextField(verbose_name="内容") created_date = models.DateField(auto_now_add=True, verbose_name="作成日時") |
IDは明示的に指定しない場合は自動で作成されるため、ここでは省略。
※明示的に指定することもできる。
titleはブログ記事のタイトルで、CharaFieldで最大長を100文字、管理者サイトの詳細画面での表示を「タイトル」とした。
contentはブログ記事の内容で、TextFieldで多量の文章を扱えるようにし、管理者サイトの詳細画面での表示を「内容」とした。
titleはブログ記事のタイトルで、DateFieldで新規作成時のみ現在の日付をセットする。また管理者サイトの詳細画面での表示を「作成日時」とした。
verbose_nameは管理者サイトでの詳細画面を開いた際に、各項目をどのように表示するのかを指定するためのオプション。
何も指定しない場合は、title, content, created_dateなどフィールド名が使われる。
オプションで指定することで日本語で表示できる。
現在のディレクトリ構成は以下の通り。(変更なし)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
デスクトップ └Blog ├Blog_app │ ├migrations │ ├__init__.py │ ├adming.py │ ├apps.py │ ├models.py #今回編集 │ ├tests.py │ ├views.py │ ├urls.py │ ├templates │ └Blog_templates ├db.sqlite3 ├config │ ├・・・ │ └urls.py ├env_blog └manage.py |
Django記事一覧
前回:【Django】アプリケーション内にurls.pyとtemplatesディレクトリを作りパスを通す
次回:【Django】作成したモデルをマイグレーションしてデータベースに反映する
参考
コメント