🐍

【Python】Django Adminを使ってみよう

2024/11/19に公開

開発環境:

  • windows 11
  • Vscode 1.87.2
  • Docker 26.1.1
  • Docker-compose 2.27.0
  • python
  • Django

達成目標

  • Django Admin画面を開き、データを挿入することができる。

前提

  • DjangoのマニュアルのWriting your first Django app, part 2に準ずる内容となっている。

https://docs.djangoproject.com/en/5.1/intro/tutorial02/

  • アプリケーションのトップページが表示されている状態かつデータベースの設定が完了している状態から解説をしていく。

開発環境の構築がまだの方はこちらから↓

https://zenn.dev/code_journey_ys/articles/ddd8ba305a2538

データベースの設定がまたの方はこちらから↓

https://zenn.dev/code_journey_ys/articles/50df0fe110baac

基礎編

Django Adminとは

Djangoフレームワークに組み込まれている管理用のWebインターフェース。Django Adminを使用すると、管理画面を一から作成する必要がなくなり、開発の効率を上げることができる

1.管理者ユーザーを作成

requirements.txtの内容が表示される。
docker-compose exec web python manage.py createsuperuser
出力結果
$ docker-compose exec web python manage.py createsuperuser
Username (leave blank to use 'root'): admin
Email address: admin@example.com
Password: 
Password (again): 
Superuser created successfully.

2.モデルを作成

アプリケーションフォルダ内のadmin.pyファイルへ追記

以下をadmin.pyへ全て追加
from .models import Category

@admin.register(Category)  # 管理画面に登録
class CategoryAdmin(admin.ModelAdmin):
    list_display = ('id', 'name')  # 管理画面で表示する列
モデルを管理画面に追加する際の方法
小規模プロジェクトの場合
from django.contrib import admin
from .models import Category

admin.site.register(Category)
大規模プロジェクトの場合(検索できたりなど拡張性がある)
from django.contrib import admin
from .models import Category

@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
    list_display = ('id', 'name')  # 表示する列
    search_fields = ('name',)  # 検索対象
    list_filter = ('name',)  # フィルター

アプリケーションフォルダ内のmodels.pyファイルへ追記

以下をmodels.pyへ全て追加
class Category(models.Model):
    name = models.CharField(max_length=255)

    def __str__(self):
        return self.name

3.マイグレーションを実行

マイグレーションを実行する
docker-compose exec web python manage.py makemigrations
docker-compose exec web python manage.py migrate
出力結果
$ docker-compose exec web python manage.py makemigrations
$ docker-compose exec web python manage.py migrate

Migrations for 'users':
  users/migrations/0002_category.py
    - Create model Category

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions, users
Running migrations:
  Applying users.0002_category... OK

4.コンテナの再起動

コンテナの再起動
docker-compose restart
docker-compose up

5.管理画面の表示確認

http://localhost:8000/adminへアクセスし、管理者ログイン画面が表示されるか確認

ログイン情報を入力し、管理画面に遷移するか確認

6.データ登録

+addボタンからテストデータを追加していく

追加されたかを確認する

Discussion