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


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

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

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


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

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

【docker-compose】Django+PostgreSQL+Nginxを連携した構築手順(CentOS8+VPS環境)

2020年5月2日

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画面に追加機能を作成し、表示させる手順は以上となります。

Docker実践ガイド 第2版 impress top gearシリーズ

Docker実践ガイド 第2版 impress top gearシリーズ

古賀 政純
3,762円(08/03 17:20時点)
発売日: 2019/02/18
Amazonの情報を掲載しています


関連記事


コメントを残す

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

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

ABOUTこの記事をかいた人

blank

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