【Django】Todoアプリを開発 #2 ~データベースの作成、編集~
スポンサードリンク
おはようございます。Shotaです。
今回の記事もDjangoでTodoアプリを開発するための方法について解説していきます。
「データベース」とは?
データベースとは、簡単に言えば決まった形式で整理されたデータの集まりです。大量にあるデータを検索しやすくしたもので、コンピュータ上で整理されている情報群です。
例えば、商品情報を「商品名」や「値段」、「在庫数」の項目ごとに整理したり、複数の商品情報を「商品コード」別に分類したりしたものがデータベースになります。
Djangoにおけるデータベース
Djangoでは、アプリプロジェクトのmodels.py
にデータベースに格納するデータを記述してデータベースと連携する設計を行います。
models.py
では、データベースのテーブル名やカラム名、カラムのプロパティ値などの情報を設定します。複数のtableに共通するカラムがある場合、中小ベースクラスという仕組みを利用することで、モデル内の個々のクラスに重複するテーブルを設定する手間を省けます。要は、Djangoのmodels.py
はデータベースの設計図のような役割を果たしているのです。
todo/models.py
の設定
それでは、実際にmodel
を書いていきましょう。設定するデータベースの内容は以下の通りです。
title
:設定するタスクの名前
memo
:設定したタスクの詳細
とりあえずtodo/models.py
に以下のコードを記述してください。
todo/models.py
from django.db import models class TodoModel(models.Model): title = models.CharField(max_length=50) memo = models.TextField()
これを入力し終えたら、以下のコマンドを入力してください。
py manage.py makemigrations
入力後、以下のコマンドが表示されていたらデータベースが完成していることになります。
Migrations for 'todo': todo\migrations\0001_initial.py - Create model TodoModel
出来上がったファイルであるtodo/migrations/0001_initial.py
ファイルを見ていきましょう。
# Generated by Django 3.2.4 on 2021-10-28 23:15 from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ migrations.CreateModel( name='TodoModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=50)), ('memo', models.TextField()), ], ), ]
上記のファイルは、上述のコマンドpy manage.py makemigrations
を実行してデータベースを作成した時に表示されるコマンドです。上記のファイルで、一つ定義されていないid
という変数があります。これは、各データベースに割り振られる番号のようなものです。
あとは以下のコマンドを入力してtodo/models.py
とデータベースを連携してください。
py manage.py migrate
これでデータベースと連携できるようになりました。
データベースを操作する
管理画面にログイン
それでは、実際に以下のコマンドを入力してlocalhost:8000/admin
にアクセスして管理画面を開いてください。
py manage.py runserver
そうすると、以下のような画面が表示されていると思います。
これはDjangoの管理サイトのログイン画面です。ユーザ名とパスワードを入力してログインするのですが、まだそれらを定義していないのでログインできません。そこで、Djangoではcreatesuperuser
コマンドでユーザ名とパスワードを設定していきます。
まずは以下のコマンドを入力してください。
py manage.py createsuperuser
そして、以下のようなコマンドが表示されてユーザ名とパスワードを要求されます。それぞれ入力すれば、superuser
を作れます。ちなみに、superuser
は管理者のことを指します。superuser
はデータベースの管理やユーザの管理ができます。
これと似たようなコマンドにpy manage.py createuser
があります。これは管理者ではないユーザを作成する時に使います。やり方は基本的にsuperuser
のときとまったく同じです。
再度サーバを立ち上げて、以下の管理画面にアクセスしてください。
そしてユーザ名とパスワードを入力すると、以下のような画面が表示されていると思います。
このような画面が表示されれば成功です。
管理画面とデータベースを連携させる
しかし、上記の画面には先ほど作成したデータベースが表示されていません。データベースを管理画面に反映させるためには、todo/admin.py
のプログラムを変更する必要があります。
todo/admin.py
from django.contrib import admin from .models import TodoModel admin.site.register(TodoModel)
これで再度サーバを立ち上げると、以下の画面のようにデータベースが反映されているのが分かります。
新しいデータベースを作る
上記の管理画面に入れば、「Add」をクリックすると以下のような画面が表示されます。
そして、それぞれtitle
とmemo
にタスクの詳細を入力すれば新しくデータベースを作ることができます。
ここで、models.py
に戻って以下のようにコードを書くと記事のタイトルを表示できます。
todo/models.py
from django.db import models class TodoModel(models.Model): title = models.CharField(max_length=50) memo = models.TextField() def __str__(self): return self.title
▼変更箇所
def __str__(self): return self.title
これをモデルのクラス内に書くことで、タイトルを表示できるのです。(Todomodelからタスクの名前に切り替わっているのが分かります。)
まとめ
今回の記事では、Djangoでデータベースの作成や編集をする方法について詳細に解説しました。
今回の記事はこれで終了です。
【参考記事】