パート3
Event モデルを定義

Event モデルを定義する

events アプリケーションを作成する

企画情報の管理を担う events アプリケーションを作成します。

python manage.py startapp events

events アプリケーションを作成したら、 mysite/settings.pyINSTALLED_APPSevents アプリケーションを追加します。

mysite/settings.py
INSTALLED_APPS = [
    # ...
    "events",  # 追加
]

モデルを定義する

User モデルは AbstractBaseUser を継承して定義しましたが、汎用的なモデルは models.Model を継承して定義します。

events/models.py
from django.db import models
 
 
class Event(models.Model):
    """企画情報を管理するモデル"""
 
    name = models.CharField("企画名", max_length=255)
 
    school = models.CharField("学校名", max_length=255)
 
    date = models.DateField("開催日")
    start_time = models.TimeField("開始時間")
    end_time = models.TimeField("終了時間")
 
    description = models.TextField("企画概要", blank=True)
 
    created_at = models.DateTimeField("作成日時", auto_now_add=True)
    updated_at = models.DateTimeField("更新日時", auto_now=True)
 
    class Meta:
        verbose_name = "企画"
        verbose_name_plural = "企画"
 
    def __str__(self):
        return str(self.name)

各フィールドについては説明は不要だと思いますが、 created_atupdated_at は自動で現在時刻が入るようにしています。

auto_now_add はレコードが作成されたときにのみ現在時刻が入り、 auto_now はレコードが作成されたときと更新されたときに現在時刻が入ります。

Meta クラスは、モデルのメタ情報を定義するためのクラスです。 verbose_name は、モデルの単数形と複数形を定義します。 これは、管理画面などで表示されるときに使われます。 日本語では単数形と複数形という概念がないので、 verbose_name_pluralverbose_name と同じにしています。

__str__ メソッドは、管理画面などでオブジェクトを文字列として表示するときに呼ばれるメソッドです。

Python 的なことを言うと、 __str__ メソッドは str() 関数が呼ばれたときに呼ばれるメソッドです。 つまり、event という Event オブジェクトが格納された変数があったとき、 str(event) と書くと event.__str__() が呼ばれます。 これは Django に限ったことではなく、 Python における特殊メソッドの一つです。

管理画面に表示する

events/admin.py を以下のように編集します。

events/admin.py
from django.contrib import admin
 
from .models import Event
 
 
admin.site.register(Event)
 

テスト用のデータを作成する

管理画面を使ってテスト用のデータを作成します。

管理画面にアクセスするには、 python manage.py runserver でサーバーを起動して、 http://localhost:8000/admin/ (opens in a new tab) にアクセスします。

「EVENTS」→「企画」をクリックして、画面右上の「企画を追加」をクリックします。

適当な内容でデータを入力して「保存」をクリックします。

何個かデータを作成しておくと良いでしょう。