【Docker】Djangoのadmin管理画面にブログ投稿画面を追加する方法

Dockerで構築したDjangoのデフォルトのadomin画面は以下のようになります。

デフォルトのadmin画面だと、ユーザー・グループの追加・編集のみしか機能がありません。

今回は、admin画面にブログ投稿用のエディタ機能を追加したのでまとめました。

Docker上のDjangoでadmin画面にブログ投稿機能を追加する手順

Dockerコンテナで構築したDjangoの設定手順は前回の記事を参考にしてください。

admin管理画面に機能を追加したい場合、作成したアプリ配下の以下のファイルを編集します。

  • models.py
  • admin.py

「models.py」は追加機能を作成し、「admin.py」はadmin画面に追加・表示します。
以下、順に設定をしていきます。

「models.py」でブログ投稿機能とカテゴリー機能を作成する

「models.py」でブログ投稿機能とカテゴリー機能を作成します。
models.pyを編集で開くと「Create your models here.」から下の行で追加のモデルを作成します。

$ vim myhp/models.py 
from django.db import models

# Create your models here.

class Category(models.Model):
    title = models.CharField('カテゴリー', max_length=10)
    def __str__(self):
        return self.title
class Blog(models.Model):
    title = models.CharField('タイトル', max_length=60)
    text = models.TextField('テキスト')
    category = models.ForeignKey(Category, on_delete=models.PROTECT)
    created_at = models.DateField('作成日', auto_now_add=True)
    updated_at = models.DateField('更新日', auto_now=True)
    def __str__(self):
        return self.title

「models.py」で追加したモデルを作成

「models.py」で追加したモデルを作成するために「makemigrations」コマンドを実行します。

通常は、「python3 manage.py makemigrations myhp」で作成しますが、今回はDockerコンテナ上で動いているDjangoに対して実行するので「docker-compose run」コマンドを実行します。

※「web」は「docker-compose」のサービス名となります。

$ docker-compose run web python3 manage.py makemigrations myhp
Starting postgres ... done
Migrations for 'myhp':
  myhp/migrations/0005_blog_category.py
    - Create model Category
    - Create model Blog
$ 

うまくいくと上記のようにモデルが作成されます。

「admin.py」でadmin管理画面に作成したモデルを追加

次に上記で作成したモデル「Category」と「blog」をadmin管理画面に追加します。
作成したアプリ配下の「admin.py」を編集で開き「# Register your models here.」の下の行を追加します。

$ cat myhp/admin.py  
from django.contrib import admin

# Register your models here.

from .models import Category, Blog

admin.site.register(Category)
admin.site.register(Blog)

データベースと同期するために「migrate」コマンドを実施

最後にadmin管理画面とデータベースを同期するために「migrate」コマンドを実行します。
こちらもDockerコンテナ上なので以下のコマンドを実行します。

$ docker-compose run web python3 manage.py migrate
Starting postgres ... done
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, myhp, sessions
Running migrations:
  Applying myhp.0005_blog_category... OK
$ 

うまくいくと、最後に「OK」と表示されます。

admin画面を開くと追加したモデルが表示されます。

admin画面に追加機能を作成し、表示させる手順は以上となります。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

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

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUT US
げんき☆ひろき
インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!