【Django】管理画面のカスタマイズ
はじめに
最近、業務でDjangoに触れる機会があったので、
その時に調べた内容を随時更新していこうと思います。
完全に自分用の記事なので多くは求めないで下さい。
・前提
管理画面にログインできる状態
models.pyに記述しmigrateが済んでいる
models.pyの内容
今回のmodels.py
の内容は下記になります。
from django.db import models
class User(models.Model):
name = models.CharField("名前", max_length=32)
mail = models.EmailField()
def __str__(self):
return self.name
class Entry(models.Model):
STATUS_DRAFT = "draft"
STATUS_PUBLIC = "public"
STATUS_SET = (
(STATUS_DRAFT, "下書き"),
(STATUS_PUBLIC, "公開"),
)
title = models.CharField("タイトル", max_length=128)
body = models.TextField("本文")
created_at = models.DateTimeField("作成日", auto_now_add=True)
updated_at = models.DateTimeField("更新日", auto_now=True)
status = models.CharField("公開ステータス", choices=STATUS_SET, default=STATUS_DRAFT, max_length=8)
author = models.ForeignKey(User, related_name="entries", verbose_name="ユーザ", on_delete=models.CASCADE)
def __str__(self):
return self.title
では、この状態でどのような記述をしていけば
管理画面がカスタマイズされるかを書いていきます。
管理画面カスタマイズ
python3 manage.py startapp <アプリ名>
で定義したアプリ配下に存在する、
admin.py
で基本的に設定を行なっていきます。
ページ内リンクを貼りましたので、お探しのものを選択して下さい。
管理画面に表示する
最初の状態では管理画面に作成したModelが表示されていないので、
それを表示するために下記を記述する必要があります。
from django.contrib import admin
from .models import User, Entry
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
pass
@admin.register(Entry)
class EntryAdmin(admin.ModelAdmin):
pass
@admin.register( )
の( )内
は モデル名を記述して下さい。
また、記述するためにはモデルをインポートする必要があります。
編集画面に表示させるitemをカスタマイズ
編集画面に遷移するとデフォルトでは編集可能な全てのfieldが表示されます。
この中で、タイトルと本文のみ表示したい場合は下記のように記述します。
from django.contrib import admin
from .models import User, Entry
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
model = User
fields = ["name", "mail"]
@admin.register(Entry)
class EntryAdmin(admin.ModelAdmin):
model = Entry
fields = ["title", "body"]
fieldsの内容を編集すれば表示項目が変更されます。
すると画像のようになります。表示内容が減りました。
リストに戻る
選択画面に複数の項目を表示する
Entry内のitemを選択する画面で、デフォルトではタイトルのみ表示されています。
この画面上でタイトルだけでなく、
本文や作成者を表示したい!という場合は下記のように記述します。
from django.contrib import admin
from .models import User, Entry
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
model = User
list_display = ["name", "mail"]
@admin.register(Entry)
class EntryAdmin(admin.ModelAdmin):
model = Entry
list_display = ["title", "body", "status", "author"]
list_displayを編集すれば表示項目が変更されます。
記述後は画像のようになります。
リストに戻る
さいごに
以上になります。
まだ少し触れただけなので項目が少ないですが、
新しい知識が増えたらこちらの記事を更新していきますので是非ご覧ください。
Author And Source
この問題について(【Django】管理画面のカスタマイズ), 我々は、より多くの情報をここで見つけました https://qiita.com/onishi_820/items/fadcfc9e9dd28f54c32c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .