見出し画像

Django_ModelAdminを使って管理画面を編集 #212日目

Djangoの管理サイトは、Djangoで作成したWebアプリのデータを管理するための組み込みアプリケーションです。利用するのは主に管理者(administrator)や開発者です。

この管理サイトはとても便利で、ここからモデルに対応したデータベースのレコードを操作すること(CRUD)や、ユーザーのパスワード変更、データ検索、ソート、フィルターなど様々な機能が備わっています。

本日は参考記事のコードを模写しながら、管理サイトをカスタマイズする方法をまとめてみたいと思います。


まず、管理サイトにmodels.pyで作成したモデルを登録します。

register()メソッドを使用し、引数に登録したいモデルクラスを指定します。これはDjangoでWebアプリを作成している時の一般的な手順です。

from django.contrib import admin
from .models import Booking

admin.site.register(Booking)


次からがカスタマイズの手順です。ModelAdminを継承してクラスを定義することができます。registerメソッドの第二引数にModelAdminを継承したクラスを指定することで、第一引数に指定したモデルに対してカスタマイズが適用されるようになります。

from django.contrib import admin
from .models import Booking

class BookingModelAdmin(admin.ModelAdmin):
    list_display = [
        'status',
        'bkg_no',
        'flag',
        'created_at'
    ] 
    ordering = ('-created_at',)

admin.site.register(Booking, BookingModelAdmin)

list_displayやorderingはデフォルトで用意されているクラス変数です。

[クラス変数] :[説明]
list_display    :モデル一覧画面で表示するフィールドを指定
ordering       :初期表示時のモデル一覧画面でのソート順を指定
sortable_by  :ソート可能なフィールドを指定
search_fields:検索ボックスを表示し、そこでの検索対象を指定
list_filter       :フィルターを表示し、フィルターの対象を指定
fields            :モデル追加・変更画面で表示するフィールドの指定
exclude        :モデル追加・変更画面で表示しないフィールドの指定

https://office54.net/python/django/admin-site-customize

上記は簡単な例ですが、これを上手く応用することで、モデルにデータを登録した際の処理などを定義しておくこと等も可能です。


ここまでお読みいただきありがとうございました!



参考


この記事が気に入ったらサポートをしてみませんか?