ユーニックス総合研究所

  • home
  • archives
  • django-admin-site

adminサイトにモデルを追加する【Django】

  • 作成日: 2020-12-14
  • 更新日: 2023-12-24
  • カテゴリ: Django

adminサイトにモデルを追加する

PythonのWebフレームワークであるDjango(ジャンゴ)には、モデルを管理できる管理サイトがあります。

Djangoの管理サイト(adminサイト)って便利ですよね。
今回はこの管理サイトに開発者が作ったモデルを新しく追加する方法を解説します。

具体的には↓を見ていきます。

  • 結論を最初に
  • 解説の前提
  • 追加前の管理サイトの確認
  • モデルの作成
  • admin.pyの編集
  • 追加後の管理サイトの確認

結論を最初に

↓が結論のmyapp/admin.pyです。

from django.contrib import admin  
from .models import Post  


class PostAdmin(admin.ModelAdmin):  
    pass  

admin.site.register(Post, PostAdmin)  

解説の前提

今回の解説では↓を前提としています。

  • プロジェクト名は「myproject」
  • アプリケーション名は「myapp」

プロジェクトの作成やアプリケーションの作成は解説していないのであらかじめご了承ください。

追加前の管理サイトの確認

デフォルトのDjangoのプロジェクトでは管理サイトのルート情報はプロジェクトの中のmyproject/urls.pyに書かれています。

from django.contrib import admin  
from django.urls import path  

urlpatterns = [  
    path('admin/', admin.site.urls),  
]  

↑のようにadmin/のパスにアクセスすれば管理サイトにアクセスできるということになります。
管理サイトにアクセスすると、デフォルトでは↓のように表示されます。

python manage.py createsuperuserで作成した管理ユーザーの名前とパスワードを入力すると管理サイトに入ることが出来ます。
管理サイトに入ると↓のような画面になります。

デフォルトではGroupUserのモデルがあるだけです。
これらのモデルはDjangoのモデルで、最初から管理サイトに設置されています。

モデルの作成

今回の解説のためにモデルを作りたいと思います。
モデルはmyapp/models.pyに作ります。
掲示板アプリを想定して投稿内容を表現するPostというモデルを作ります。
このPostモデルは投稿者名を表すnameフィールドと投稿内容を表すcontentフィールドを持ちます。

from django.db import models  


class Post(models.Model):  
    name = models.CharField(max_length=128, help_text='投稿者名')  
    content = models.TextField(max_length=1024, help_text='投稿内容')  

nameフィールドはCharFieldで、contentフィールドはTextFieldです。
このモデルを定義したら忘れずにmanage.pymakemigrationsmigrateを実行しておきます。

python manage.py makemigrations  
python manage.py migrate  

admin.pyの編集

Djangoの管理サイトを編集するには、各アプリケーションが持っているadmin.pyというファイルを編集します。
myapp/admin.pyを開くと↓のようになっています。

from django.contrib import admin  

# Register your models here.  

「Register your models here(あなたのモデルをここに登録してね)」と書いてあります。
今回作成したPostモデルを管理サイトに追加するには、↓のようにします。

from django.contrib import admin  
from .models import Post  


class PostAdmin(admin.ModelAdmin):  
    pass  

admin.site.register(Post, PostAdmin)  

モデルの管理サイトへの登録にはまずadmin.ModelAdminを継承したクラスPostAdminを作ります。
そしてそのクラスをPostモデルと一緒にadmin.site.register()で登録します。

追加後の管理サイトの確認

モデルを追加後の管理サイトを確認すると↓のような画面になっています。

「MYAPP」というカテゴリが追加され、その中に「Posts」という項目が追加されました。
「Posts」をクリックすると↓のような画面になります。

ここにはオブジェクトの一覧が表示されます。
右上の「ADD POST」をクリックするとオブジェクトの追加ができます。

おわりに

Djangoの管理サイトにモデルを追加できるようになると開発がはかどります。
管理サイトからモデルの確認、追加、削除を行って開発を進めましょう。

🦝 < 管理サイトは心の故郷