Django公式チュートリアルを参考に、アプリのモデルを作成する手順についてまとめていく。
前回までの記事で作成したアプリはこちら。
【Python】Djangoプロジェクトの作成と開発用サーバーの立ち上げ
【Python】Djangoアプリを作成してHelloWorldを表示する
今回は、作成したpollsアプリにQuestionとChoice、二つのモデルを作成する。
モデルの作成
まず、polls/models.pyに以下2つのクラスを追記する。
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
少しコードを解説しておくと、まずQuestionクラスには質問文と掲載日を、Choiceクラスには選択肢となるテキストと投票数を管理するvotesが定義されている。
また、Choiceクラスの選択肢は、ForeignKeyで一つのQuestionに対応するようにしている。
作成したモデルを有効化する
モデルを有効化する前に、作成しているアプリをDjangoプロジェクトに追加する必要がある。
mysite/settings.pyを開いて以下の1行を追加しよう。
INSTALLED_APPS = [
'polls.apps.PollsConfig', # この行を追加
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
ファイルを保存したら以下のコマンドを叩く。
python manage.py makemigrations polls
エラー文が出なければOK。
makemigrationsを実行することで、Djangoにモデルの変更があったことを伝え、また変更をマイグレーションとして保存することができる。
最後に下記のmigrateコマンドを実行し、定義したモデルをデータベースに反映させる。
python manage.py migrate
まとめ 〜モデル作成の手順〜
Djangoにおけるモデル作成は次の手順で構成される。
- モデルの作成(models.py)
- マイグレーションの作成(makemigrationsコマンド)
- データベースに変更の適用(migrateコマンド)