DjangoでToDoList開発Part2

こんにちは、にわこまです。

今回は、model(データベース)を構築して、実際にデータを格納します。アプリケーションを作る上で、欠かせないものになっています。分かりやすく説明します。

 

「DjangoでToDoList開発」シリーズはDajgnoのチュートリアルとして利用されることを目的としています。そのため、誤字脱字や分かりにくい点がございましたら、ご連絡お願い致します。

 

 

スポンサードサーチ


DjangoでToDoList開発Part2

モデルを簡単に言うとデータベースのテーブル(表)のことです。もっと簡単に言うとExcelの表のことです。

 

モデルに1つのデータを格納していき、取り出したいときにいつでも取り出すことができます。 また、「名前がAから始まる人」のように条件を指定してデータを取り出すこともできます。

 

モデルでは格納したいデータに対して、適切なフィールドを設定しなければなりません。

例えば、
名前を格納したいならば、文字列のフィールドを設定する。
年齢を格納したいならば、数値のフィールドを設定する。
誕生日を格納したいならば、日付のフィールドを設定する。
といったようにします。

 

 

モデルの作成

model(モデル)とは、データベースのテーブル(表)のことであると説明しました。 モデルを作成するには、まずテーブル名を決めます。その後、テーブルに格納するデータの型などを設定していきます。

 

データベースとテーブルのイメージを下に示します。

 

プロジェクト内でデータベースとテーブルを有効にするために、以下のコマンドを実行します。

python manage.py migrate

実行すると、「Applying ~ 」という行が数十行出力されます。

 

次にモデルを作成します。todolist/models.pyを編集します。

from django.db import models

# Create your models here.
class MyToDoList(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=200)
    contents = models.TextField()
    entryDate = models.DateField(auto_now_add=True)
    deadline = models.DateField()
    done = models.BooleanField(default=False)
    def __str__(self):
        return self.title

 

コードの解説

テーブル名にあたるのが「MyToDoList」です。

 

id」は通し番号として利用します。「AutoField」はユーザが特に操作しなくても数値が格納されるフィールドです。「primary_key」は、その行を一意に決めるためのものです。

例えば、
「id = 1」と指定したときにいくつもデータが抽出されてしまっては困ります。それを回避するためのものです。
データを格納するときに、格納するデータがすでに格納されていないか確認する役割を果たします。

 

title」はtodo listの見出しとして利用します。「CharField」は文字列を格納するときに使います。その際は必ず「max_length(最大文字列)」を設定しなければなりません。

 

contents」はtodo listの内容として利用します。「TextField」は文字列を格納するときに使います。

「CharField」と「TextField」の違いを簡単に説明すると、最大文字列を設定するかしないかです。
CharField:最大文字列を設定する
TextField:最大文字列を設定しない。

 

entryDate」は記入日として利用します。「DateField」は日付を格納するときに使います。「auto_now_add=True」は、データを格納した日を自動で格納する設定です。デフォルトはFalseであるため、不必要である場合は気にしなくてよいです。

 

deadline」は締切日として利用します。「DateField」は日付を格納するときに使います。

 

def __str__(self):」は、Django Adminで確認するときに見出しとして表示されるデータを指定しています。

 

次に、モデルをプロジェクト内で有効にさせます。myapp/myapp/settings.pyを編集します。「INSTALLED_APPS」の最後にtodolistを追加します。

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'todolist',  # 追加部
]

 

次に、モデルと定義または変更、削除した場合は、それを反映させるために以下の2つのコマンドを実行します。

# コマンド1つ目
python manage.py makemigrations todolist

# 実行結果
Migrations for 'todolist':
  todolist\migrations\0001_initial.py
    - Create model MyToDoList
# コマンド2つ目
python manage.py migrate

# 実行結果
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions, todolist
Running migrations:
  Applying todolist.0001_initial... OK

 

以上でモデルの定義が完了です。

 

完成したモデルのデータベースとテーブルのイメージ図を下に示します。

 

しかし、本当にモデルを作成できているか不安であるため、Django Adminを使って確認を行います。

 

 

スポンサードサーチ


Django Adminで確認

Django Adminは、管理サイトを自動生成してくれるものです。その管理サイトでは、定義したモデルやそのモデルに格納されているデータを確認することができます。

 

まず、定義したモデルを管理サイトで確認することができるように、登録を行います。todolist/admin.pyを編集します。

from django.contrib import admin
from .models import MyToDoList  # 追加部

# Register your models here.
admin.site.register(MyToDoList)  # 追加部

以上で登録は完了です。

 

Django Adminを管理するユーザを作成します。以下のコマンドを実行します。(作成済みの方は飛ばしてください。)

python manage.py createsuperuser

 

ユーザ名とメールアドレスとパスワードを入力します。パスワードは、短すぎたりユーザ名と似すぎたりすると警告を受けます。 「Superuser created successfully.」と最後の行に出力されたら、管理ユーザ作成は完了です。

 

次に、サーバを起動させるため以下のコマンドを実行します。

python manage.py runserver

 

サーバを起動させたら「http://localhost:8000/admin/」にアクセスします。以下のような画面が表示されます。

 

ユーザ名とパスワードを入力してログインをすると以下のような画面が表示されます。TODOLISTの欄に「My to do lists」が登録されていることが確認できます。

 

データを追加

デーブルが定義されていることを確認することができたため、実際にデータを格納してみます。

 

「My to do lists」の追加をクリックします。

 

「①title」と「②contents」と「③deadline」に適当なデータを入力して、④保存します。

 

正しく保存できるとページが自動で移動します。入力した単語が格納されていることが確認できます。

上の画像において赤線で囲われた部分に表示されているのは、モデルを作成したときに「def __str__(self):」で指定したものです。今回は、「self.titile」と指定したためタイトルが表示されています。

 

 

スポンサードサーチ


まとめ

今回は、アプリケーションを作る上で重要なモデルを作成しました。また、作成したモデルに実際にデータを格納してみました。

 

モデルの定義または、変更、削除を行ったら、それを反映させるコマンドを必ず実行します。
1つ目:「python manage.py makemigrations アプリ名」
2つ目:「python manage.py migrate」

 

モデルの確認はDjango Adminで行います 。

 

 

「DjangoでToDoList開発Part3」では、トップページの作成を行います。

 

最後までお読みいただきありがとうございます。


スポンサードサーチ