Django

Django 簡単なアプリを作って基礎を覚える③ 管理画面を使う

前回は、urls.py と views.py の役割と動作を確認しました。

今日は、データを保存するデータベースを作成する、models.py について解説と作成をします。

models.py について

システムを作る上で、絶対に必要となるデータを保存するデータベースです。

Djnagoでは、models.pyで作成や変更、設定をすることができます。

models.py にタスク管理用の項目を設定する

それでは、タスク管理をするためのデータベースの項目を作っていこうと思います。

from django.db import models #1
from django.contrib.auth.models import User #2

class TaskModel(models.Model): #3
    title = models.CharField(verbose_name='タイトル', max_length=100,  null=True) #4
    memo = models.TextField(verbose_name='内容', blank=True, null=True) #5
    user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='担当者',blank=True, null=True) #6
    plants_startdate = models.DateField(verbose_name='開始予定日', blank=True, null=True) #7
    plants_enddate = models.DateField(verbose_name='終了予定日', blank=True, null=True) #8

    def __str__(self): #9
        return self.title #10
  • 1行目は、Djangoのモデルを管理するためのモジュールをインポートしてね!です。
  • 2行目は、先ほど作成したUserモデルを参照するために読み込みをしています。
  • 3行目は、TaskModelという名前のデータテーブル(ひとつの塊、Excelで言うシートみたいな感じ)ですよ!です。
  • 4行目は、タスクのタイトルで、CharFieldは、文字列のフィールドです。verbose_nameは、前回入った管理画面での表示名称を指定しています。Max_lengthは、最大100文字と指定しています。nullは、不明なものもありですなので、何もないことをTrueは許すになります。Falseは、逆に何か入れないとダメということになります。
  • 5行目は、タスクの追記のようなものです。説明やメモで、複数行入力したりすることを考慮して、TextFieldで設定しています。
  • 6行目は、ForeignKeyで外部のテーブル、今回は、UserテーブルのUserと外部キーとして紐づけます。これは、だれがこのタスクの担当者なのかを管理するために用意しています。
  • 7、8行目は、開始予定日と終了予定日になります。
  • 9行目は、strやprintで呼び出されたときに返す文字列を指定しています。この場合、selfはクラス自身ということなので、titleを返すということになっています。

データベースを作成しよう!

それでは、データベースを作成します。じつは、もうすでに経験しているんですよね😃

Userを作った時に、やっています。あれは、Djangoの標準としてUserマスタは裏で自動で項目を管理して作ってくれています。

python manage.py makemigrations

実行すると下記のようなメッセージがでます。

Migrations for 'task':
  task\migrations
Migrations for 'task':
task\migrations\0001_initial.py
- Create model TaskModel
01_initial.py - Create model TaskModel

これは、変更箇所をDjangoが認識しているような感じです。ここから、マイグレして反映させます。

python manage.py migrate #を実行
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions, task
Running migrations:
  Applying task.0001_initial... OK

これでデータベースが出来上がりました。

管理画面に新しく作ったテーブルを表示する設定

テーブルを作成したら、データベース上にはテーブルはあるのですが、管理画面には表示されません。ちょっと不親切な気がしますが…(笑)

管理画面に表示するための設定をしましょう❕

from django.contrib import admin
from .models import TaskModel

class TaskModeladmin(admin.ModelAdmin):
    list_display = ('title','user', 'plants_startdate')
    ordering = [ "plants_startdate" ]

admin.site.register(TaskModel, TaskModeladmin)

今までになかったのが、list_displayでこれは、一覧表に載せる項目を指定しています。次のorderingは並び順を指定しています。

これで、ランサーバーをして管理画面に入ってみましょう❕

python manage.py runserver 

サーバーを起動したら、管理画面にアクセスしましょう❕

http://127.0.0.1:8000/admin/

Task modelsが追加されています。追加をクリックして追加してみましょう

登録を3つしてみましょう。先ほど、一覧表に載せるタイトルと担当者と開始予定日が表示されています。

また、並び順は開始予定日で並んでいることがわかります。

ちょっとですが、システムっぽくなってきましたね😃

今回は、ここまでにします。

次回は、管理画面からでみるのではく、実際にタスクを一覧で見る画面をつくっていこうと思います😆

django listを表示
Django 簡単なアプリを作って基礎を覚える④ ListViewを作成

今回から、いよいよ画面を作っていくことになります😃 いよいよって感じですね🙂 もくじ1 Django ListViewを作って一覧表を表示しよう!1.1 templates フォルダを指定する1.1. ...

続きを見る

-Django

© 2021 ごろう@縁紡ぐ