前回まででDjangoの雛形まで作成しました。
www.te-tou.tokyo
次にすることは、テーブル定義の作成です。要は、データベース設計。
基本的に、これがないとやりたいことが実現出来ないと思います。が、これが一番キモとなる部分ですね。
ここでは業務とか本番環境とかではないので、ざっくり適当に作ります。
以前の記事を参考に。
www.te-tou.tokyo
Djangoのデータベース
Djangoの開発環境で使用するデータベースはSQLiteというものになります。
多分、物理的にデータベースサーバーに格納するのではなく、テキストファイルにデータを書き込んでゆく簡易的なものかと思います。
ディレクトリの中にsettings.pyというファイルがあり、その中を覗くとDATABASESという箇所がありdefaultで"ENGINE" :~~SQLite3と記述されています。
Djangoモデル定義
下のソースコードはエラーを修正した後のものになります。
from django.db import models # Create your models here. # 受審者テーブル class testee(models.Model): # testee_id = models.IntegerField() testee_name = models.CharField( max_length=30, verbose_name='受審者' ) grade_id = models.IntegerField() # 段位テーブル class grade(models.Model): GRADE_CHOICES = ( (1, "初段"), (2, "二段"), (3, "三段"), (4, "四段"), (5, "五段"), (6, "六段"), (7, "練士"), (8, "七段"), (9, "教士"), ) # grade_id = models.IntegerField() grade_name = models.CharField( max_length=4, verbose_name='段位', choices=GRADE_CHOICES ) exam_grade = models.CharField( max_length=4, choices=GRADE_CHOICES, verbose_name='受審段位' ) # 採点表テーブル class scoringsheet(models.Model): POINT_CHOICES = ( (0.0, "0.0"), (0.5, "0.5"), (1.0, "1.0"), (1.5, "1.5"), (2.0, "2.0"), (2.5, "2.5"), (3.0, "3.0"), (3.5, "3.5"), (4.0, "4.0"), (4.5, "4.5"), (5.0, "5.0"), (5.5, "5.5"), (6.0, "6.0"), (6.5, "6.5"), (7.0, "7.0"), (7.5, "7.5"), (8.0, "8.0"), (8.5, "8.5"), (9.0, "9.0"), (9.5, "9.5"), (10.0, "10.0"), ) RESULT_CHOICES = ( (0, "不合格"), (1, "合格"), ) testee_name = models.CharField( max_length=30, verbose_name='受審者' ) exam_grade = models.CharField( max_length=4, verbose_name='段位' ) score1 = models.FloatField( choices=POINT_CHOICES ) score2 = models.FloatField( choices=POINT_CHOICES ) score3 = models.FloatField( choices=POINT_CHOICES ) score4 = models.FloatField( choices=POINT_CHOICES ) score5 = models.FloatField( choices=POINT_CHOICES ) pratical_points = models.FloatField() pratical_result = models.CharField( max_length=6, choices=RESULT_CHOICES ) written_points = models.FloatField() written_result = models.CharField( max_length=6, choices=RESULT_CHOICES ) judgement = models.CharField( max_length=6, choices=RESULT_CHOICES ) # 審査員テーブル class markers(models.Model): marker_name = models.CharField( max_length=30, verbose_name='審査員' )
マイグレーション
migrationとは、Djangoにどんなデータを格納するのか。という事を指定するコマンドです。
データベースの定義を変更するたびに行う必要があります。
現在作成しているアプリでは下記のディレクトリでコマンドを打ちます。
project
┗ scoring-sheet
┗ scoringsheet<= このディレクトリへ移動します。
> ./manage.py makemigrations
画面がいろいろ動いて、
エラーになりました。
なんか無駄に全角文字を使ってしまったようです。
なので、修正して。
...その後も幾多のエラーが出ましたが、メッセージを確認しながら修正して
成功した模様です。
これで、データベースモデルのマイグレーションファイルが出来ました。
マイグレーションファイルが出来たら、マイグレーションを実行します。
> manage.py migrate
画面がいろいろ動いて、
いろんな設定が確認されて、マイグレーション成功です。
これで、データベース定義が出来ました。