では、データベースの設定。 Djangoには、デフォルトでデータベース機能がついてきます。
C:\Users\Desktop\djangoweb\djangoweb\settings.py内の以下の記述でもわかるように、
sqliteがついてきます。
#settings.pyの初期記述内容
# Database
# https://docs.djangoproject.com/en/dev/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# https://docs.djangoproject.com/en/dev/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
なので、このDBをアプリで使用できるように設定します。
まずは、Powershellで、アップデートの確認。
runserverを実行。
マイグレートの必要があると表示された場合、プロジェクトのルートディレクトリで、以下を実行。
/python manage.py migrate
するとMigrationが実行される。
すると、先程確認したsetting.pyの最初の方に記述されたAPPSとの連携に必要なマイグレーションが完了します。
#settings.pyの初期記述内容
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
では、いよいよ 'music' アプリとデータベースの連結作業。
データベース(モデル)の作成
Djangoで、データベースを構築する時は、アプリ・ディレクトリ内の「models.py」に記述していく。
#models.pyの初期記述内容
from django.db import models
class Album(models.Model):
artist = models.CharField(max_length=250)
album_title = models.CharField(max_length=500)
genre = models.CharField(max_length=100)
album_logo = models.CharField(max_length=1000)
class Song(models.Model):
album = models.ForeignKey(Album,on_delete=models.CASCADE)
file_type = models.CharField(max_length=10)
song_title = models.CharField(max_length=250)
class Album(models.Model):
artist = models.CharField(max_length=250)
album_title = models.CharField(max_length=500)
genre = models.CharField(max_length=100)
album_logo = models.CharField(max_length=1000)
class Song(models.Model):
album = models.ForeignKey(Album,on_delete=models.CASCADE)
file_type = models.CharField(max_length=10)
song_title = models.CharField(max_length=250)
CharField:
データベースに記入される属性(キャラクタをして、最大fieldの8bit(?)のcharacter数を指定
on_delete=models
Albumのデータが削除された場合、Songのデータも消去する、という指定。
Activateの前に(1)
さきほど確認していたsetting.pyのINSTALLED_APPSに、追加しておく。
#settings.pyの初期記述内容
INSTALLED_APPS = [
'music..apps.MusicConfig', #参照(1)
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'music..apps.MusicConfig', #参照(1)
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#参照(1)
MusicCongの名前は、Music Directoryの apps.py 内のclassに記載されている名前を
もってくる。 参考としては、music アプリを作成した際に、dafaultで以下のように記載されている。
class MusicConfig(AppConfig):
name = 'music'
Activateの前に(2)
このまま 'run server'を実行すると、最初に見たように、「適用されていない」という表示が出てしまうので、(現時点では、DjangoのDBにmodels.pyで定義したDBの構造が反映されていない。)
そこで、Powershellからあらかじめ、次のコマンドを実行しておく。
>python manage.py makemigrations music
すると"Album" と "Song" というデータベースが無事に作成されました。
以降、データベースの構造を変えた場合は、必ず、この makemigrations を実行し、
冒頭の
/python manage.py migrate
も、実行する。
蛇足)sqlテーブルを確認。
通常、する必要はありませんが。
>python manage.py sqlmigrate music 0001
001: データテーブルを作成すると自動的にDjangoにより付与されるIDを実行すると、
となり、テーブルが作成されていることが確認できます。
参考)
Django Tutorial for Beginners - 6 - Database Setup
https://youtu.be/IU3LbtbmXXI
0 件のコメント:
コメントを投稿