【Django公式サイト チュートリアル(2)】データベース設定
こんにちは(@t_kun_kamakiri)
前回の続きをします。
今回は、Django内でデータベースの設定を行います。
こちらのチュートリアルにしたがって勉強ログを残しておきます。
Database の設定¶
データベースの設定は、
1.「mysite/polls/models.py」でデータベースのクラスを作成
2.「mysite/settings」ファイル内でどのアプリのモデルを読み込ませるかを設定
1.「mysite/polls/models.py」でデータベースのクラスを作成
まず、「mysite/polls/models.py」を以下のようにします。
from django.db import models
# Create your models here.
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)
●class Question(models.Model):は何をしているのか?
django.dbのライブラリのmodels.pyのファイル内のModelというクラスを継承しているという意味です。
CharField、DateTimeField、IntegerFieldでフィールドの型をしていしています。
※注意点としては、CharField には必ずmax_lengthの引数を設定する必要があるという点です。
フィールドの型については以下の記事がよくまとまっているので参照させていただきます。
2.「mysite/settings」ファイル内でどのアプリのモデルを読み込ませるかを設定
先ほど作成したモデルを有効にするためには、どのアプリのデータベースを作成するのかを「mysite/settings」に指定する必要があります。
その設定は、「mysite/settings」のINSTALLED_APPS 内に記述します。
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
「 'polls.apps.PollsConfig',」を追加しました。
これは、「polls/apps.py」のファイル内のクラス「PollsConfig」を読み込んでいる設定となります。
では、polls/apps.pyがどうなっているのかというと、
from django.apps import AppConfig
class PollsConfig(AppConfig):
name = 'polls'
「name = 'polls'」となっています。
この関係性を絵にすると以下のようになります。
結局どのアプリを指定しますか?という設定なので、'こんな回りくどいことをせずに、直接以下のように書いても良いです。
INSTALLED_APPS = [
'polls',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
でも、今回はチュートリアルに従って書いていくことにします。
そして次のコマンドを実行します。
python3 manage.py makemigrations polls
エラーがなければ以下のようにモデルデータベース用のファイルが作成されます。
ここで例えば新たにデータの変数名を変えたとします。
question_text1 = models.CharField(max_length=200)
もう一回、以下のコマンドを実行します。
python3 manage.py makemigrations polls
すると、「Did you rename question.question_text to question.question_text1 (a CharField)? [y/N] y」と名前の変更をしますか?と聞かれるので「y」を押して進めます。
すると以下のように変更箇所が記されたファイルが新たに作成されます。
次に、以下のコマンドを実行してデータベースに反映させます。
python3 manage.py migrate
問題がなければ以下のようになります。
「Apply all migrations: admin, auth, contenttypes, polls, sessions」となっているので設定したアプリ内のデータベースがされています。
流れを今一度おさらいしておきます。
●モデルを変更する (models.py の中の)
●これらの変更のためのマイグレーションを作成するために python3 manage.py makemigrations を実行します。
●データベースにこれらの変更を適用するために python3 manage.py migrate を実行します。
管理画面でデータベースを確認してみる
先ほど作成したデータベースを管理画面で確認してみます。
やることの手順は以下です。
1.管理ユーザーを作成
2.開発用サーバーからログイン
では、やっていきましょう。
1.管理ユーザーを作成
まずは、管理ユーザーを以下のコマンドで作成します。
python3 manage.py createsuperuser
username
Email adress(何も設定しなくても良い)
Password
を適当に設定します。
これで管理ユーザーを作成できました。
では、開発用サーバーを立ち上げて管理画面を確認してみます。
python3 manage.py runserver
サーバーを立ち上げたら「http://127.0.0.1:8000/admin」もアクセスします。
ログインすると以上のような画面になるのですが、先ほど作成したデータベースがまだありません。
管理画面でデータベースの表示を行うには、「polls/admin.py」の中を以下のようして、adminにもモデルの存在を知らせる必要があります。
from django.contrib import admin
from .models import Question, Choice
# Register your models here.
admin.site.register(Question)
admin.site.register(Choice)
「register」とあるので、「Question」と「Choice」をadminに登録するといった意味合いになります。
これで再度アクセスすると以下のようにでデータベースが反映されています。
「+Add」を押して自由にデータを自由に追加することができます。
このように管理画面からデータベースの操作ができます。
本日は以上です。
Twitter➡@t_kun_kamakiri
ブログ➡宇宙に入ったカマキリ(物理ブログ)
ココナラ➡物理の質問サポートサービス
この記事が気に入ったらサポートをしてみませんか?