[申請承認アプリ]モデルの作成

次に、セミナーデータを扱うモデルを作成していきましょう。

applicationフォルダのmodels.pyを編集して、下記の通りとしてください。

from django.db import models

class Seminar(models.Model):
	TYPE_CHOICES = [
	('el', 'eラーニング'),
	('f2f', '集合研修'),
	]
	
	name=models.CharField("セミナー名", max_length=200)
	type=models.CharField("形式", max_length=3,choices=TYPE_CHOICES)
	accept_start_date=models.DateField("申請受付開始日", )
	accept_end_date=models.DateField("申請受付終了日", null=True, blank=True,)
	start_date=models.DateField("開催日(開始日)", )
	end_date=models.DateField("開催日(終了日)", null=True, blank=True,)
	overview=models.TextField("概要", )

ここで指定したクラス変数名が実際のデータベースのフィールド名にも使われます。クラス変数に入れる各フィールドクラスに応じて、データベースの設定が行われます。

そのため、実際に格納されるデータに応じたフィールドを選択しましょう。今回用いたフィールドは下記の通りです。

models.CharField比較的短いテキストを保存するフィールドです。デフォルトでは一行のテキストボックスがフォームで表示されます。
max_lengthが必須の引数となっていて、最大文字数を必ず指定する必要があります。
models.DateField日付を保存するフィールドです。デフォルトでは一行テキストボックスがフォームで表示されます。特定の書式しか受け入れられず使い勝手が悪いので利用時にはカスタマイズをした方がいいでしょう。カスタマイズについては後ほど触れます。
models.TextField長いテキストを保存するフィールドです。
デフォルトで複数行のテキストボックスがフォームで表示されます。

各フィールドの第一引数に文字列を入れていますが、これはverbose_nameの指定をしています。(verbose_name=”文字列”の形で記載しても同じです。但し、foreign_keyなどのフィールドの場合は第一引数にモデルを指定する必要があるため、verbose_name=を省略することはできません。)

verbose_nameは人間が読むための文字列を入れます。この情報はフォームを出力したときの項目名や、管理画面にも反映されますので、忘れずに書いておきましょう。

セミナー形式のところで、CharFieldの引数にchoicesをタプルのリストで指定しています。タプルの中では一つ目にデータ、二つ目に表示文字列を入れます。

通常はCharFieldでは一行テキストボックスが表示されますが、このchoicesの指定によって、セレクトボックスが表示されるようになっています。他のモデルを参照しないが、入力する内容が決まっている場合に使えます。

一部のフィールドにnull=True, blank=Trueを入れていますが、nullはデータベース上での制約設定、blankはフォームでの制約設定です。デフォルトではFalseになっているので、フォームで空欄で送信するとエラーとなります。入力を任意にする項目ではTrueとしましょう。フォームで値を受け取ってから、システム側でデータを編集してからデータベースに入れるケースでは、nullとblankの設定が変わる場合がありますが、入力値をそのまま保存する場合は、nullとblankは同じ設定になるかと思います。

次に作成したモデルを管理画面でも編集できるようにしましょう。admin.pyを下記の通り編集します。

from django.contrib import admin
from .models import Seminar#追加

#追加
admin.site.register(Seminar)

このようにモデルをインポートしてadminサイトに登録すると、管理画面に表示されるようになります。

続いてはフォームを作っていきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です