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
で作成した管理ユーザーの名前とパスワードを入力すると管理サイトに入ることが出来ます。
管理サイトに入ると↓のような画面になります。
デフォルトではGroup
とUser
のモデルがあるだけです。
これらのモデルは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.py
でmakemigrations
とmigrate
を実行しておきます。
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の管理サイトにモデルを追加できるようになると開発がはかどります。
管理サイトからモデルの確認、追加、削除を行って開発を進めましょう。
🦝 < 管理サイトは心の故郷