models.pyの定義方法
モデルとは、DBの各テーブルとのアクセスをする際に用いられるクラスで、djanogではmodels.pyにモデルの定義を記載する。
- models.pyでモデルを定義する
class Topic(models.Model): #Topicモデル
top_name = models.CharField(max_length=264, unique=True) #top_nameプロパティは最大264文字でユニークの文字列
def __str__(self):
return self.top_name
class Webpage(models.Model): # Webpageモデル
topic = models.ForeignKey(Topic, on_delete=models.CASCADE) # Topicモデルへの外部キー、CASCADEにしているため、Topicの参照先が削除されると参照されているレコードが強制的に削除される
name = models.CharField(max_length=264, unique=True) # nameプロパティは最大264文字でユニークの文字列
url = models.URLField(unique=True) # urlプロパティはURLの文字列
def __str__(self):
return self.name
class AccessRecord(models.Model): # AccessRecordモデル
webpage= models.ForeignKey(Webpage, on_delete=models.CASCADE) # Webpageモデルへの外部キー
date = models.DateField() # dateはDate型
def __str__(self):
return str(self.date)
python manage.py migrate,python manage.py makemigrationsの実行によるマイグレーション
models.pyを設定したら
- python manage.py migrate
- python manage.py makemigrations アプリケーション名
- python manage.py migrate
アプリケーション名にはmodels.pyを更新したアプリケーション名を入れる
を順に実行する。
(2回目以降は、python manage.py makemigrations アプリケーション名、python manage.py migrateだけでよい)
1. python manage.py migrateでsettings.pyの設定に従ってのDB作成、初期のテーブルをDB内に作成する。
2. python manage.py makemigrations models.pyを更新したアプリケーション名で、アプリケーションのmodels.pyの記載に沿ったモデルをDBに作成するためのファイルが出力される。
3. python migrateを行うことで、出力されたファイルの内容がDBに反映されてテーブルが作成される。
管理画面でモデルの利用
作成したモデルを管理画面で挿入、更新、参照できるようにするには、アプリケーションのadmin.pyに以下のように記載する。
- admin.pyへの記述
from firstapp.models import AccessRecord,Topic,Webpage # モデルのインポート
admin.site.register(AccessRecord)
admin.site.register(Topic)
admin.site.register(Webpage) # 管理画面に、モデルAccessRecord,Topic,Webpageを追加
次に管理用のスーパーユーザーを作成する。
python manage.py createsuperuser
デフォルトでは、http://{url}/adminで管理画面にアクセスできる。
1.ログイン画面
2.初期画面
- 上のAUTHENTICATIONでは、管理画面利用ユーザの作成
- 下はそれぞれアプリのテーブルへデータを挿入・削除・変更することができる
以上、モデルの作成と管理画面でのモデルの操作でした。