概要
- Docker-composoe + Django環境で作業環境を整えます。
- Djangoは専用の管理画面からデータベースの操作(作成や編集など)が行えます。
- つまりPHPMyAdminなどが不要!!
環境
- Docker + Docker-compose が利用できること。
- Python3.6
- Django3.1(最新)
前提
-
Docker-compose + Django + MySQL + Nginx + uwsgi を使った環境の初期設定 が完了していること
- djangoが起動中である
- データベースへアクセスできる
- 管理画面へアクセスできる
- または、同等の環境であること
手順
アプリケーションの作成
- アプリケーションの作成
- django: Dockerコンテナ名
- sample: アプリケーション名
$ docker-compose exec django python3 manage.py startapp sample
コンフィグの修正
-
src/app/settings.py
を編集する- INSTALLED_APPS に作成したアプリケーションを追加する
- sample: フォルダ名
- SampleConfig:
src/app/sample/apps.py
に書いてあるclass
名
- INSTALLED_APPS に作成したアプリケーションを追加する
src/app/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'sample.apps.SampleConfig', # 追加
]
モデルの作成
-
src/app/sample/models.py
を編集する
src/app/sample/models.py
from django.db import models
class Test1(models.Model):
class Meta:
verbose_name_plural = "テスト1"
test1_name = models.CharField("テスト名",max_length=25)
test1_value = models.CharField("テスト値",max_length=25)
def __str__(self):
return self.test1_name
class Test2(models.Model):
class Meta:
verbose_name_plural = "テスト2"
test1= models.ForeignKey(Test1, on_delete=models.PROTECT)
test2_name = models.CharField("テスト名",max_length=25)
test2_value = models.CharField("テスト値",max_length=25)
def __str__(self):
return self.test2_name
管理画面の設定
-
src/app/sample/admin.py
を編集する
src/app/sample/admin.py
from django.contrib import admin
# Register your models here.
from sample.models import Test1, Test2
admin.site.register(Test1)
admin.site.register(Test2)
マイグレーション
- マイグレーションファイルを作成して実行
$ docker-compose exec django ./manage.py makemigrations
$ docker-compose exec django ./manage.py migrate
確認
- 下記へログインするとモデルで作成したデータベースが操作できる
http://<IP>:8000/admin