皆さん、こんにちは。
今日はDjangoの管理者機能について紹介します。
前回までで説明した事は以下になります。
ファイルの構造は以下になります。
mysite
├── db.sqlite3
├── hello
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── __init__.py
│ │ └── __pycache__
│ │ ├── 0001_initial.cpython-36.pyc
│ │ └── __init__.cpython-36.pyc
│ ├── models.py
│ ├── __pycache__
│ │ ├── admin.cpython-36.pyc
│ │ ├── __init__.cpython-36.pyc
│ │ ├── models.cpython-36.pyc
│ │ ├── urls.cpython-36.pyc
│ │ └── views.cpython-36.pyc
│ ├── static
│ │ └── css
│ │ ├── bootstrap.min.css
│ │ └── style.css
│ ├── templates
│ │ └── index.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── manage.py
└── mysite
├── asgi.py
├── __init__.py
├── __pycache__
│ ├── __init__.cpython-36.pyc
│ ├── settings.cpython-36.pyc
│ ├── urls.cpython-36.pyc
│ └── wsgi.cpython-36.pyc
├── settings.py
├── urls.py
└── wsgi.py
管理者機能の説明
Djangoには管理者機能が既に準備されております。
今回はその管理者機能を説明します。
説明するのは以下の点です。
- 管理者の作成方法
- モデルの表示方法
- アドミンでモデルの操作(データの追加削除)
管理者の作成方法
管理者の作成方法は以下になります。
python manage.py createsuperuser
では実際に作成してみましょう。
python manage.py createsuperuser
#Username (leave blank to use 'root'): admin
#Email address: admin@gmail.com
#Password:
#Password (again):
#Superuser created successfully.
各項目の説明は以下になります。
- Username: ユーザー名
- Email address: メールアドレス
- Password: パスワード(短くても簡単すぎても通りませんのでご注意ください)
- Password(again): パスワード再確認
そして起動して実際に管理者画面に行ってみましょう
python manage.py runserver 0:8000
その後 <ipアドレス>:8000/adminに言ってください。
すると登録画面が表示されます。

ここでユーザー名とパスワードを入力し、ログインしましょう。
その後以下の画面が表示されます。

これで管理者の作成終了です。
管理者画面でモデルの表示方法
モデルを表示する方法として、admin.pyに登録する必要があります。
まずは登録する前の準備をしましょう。
mysite/hello/models.pyを編集します。
from django.db import models
# Create your models here.
class Personinfo(models.Model):
GENDER = [
('Male','Male'),
('Female','Female'),
]
last_name = models.CharField(max_length=30)
first_name = models.CharField(max_length=30)
gender = models.CharField(max_length=10,choices=GENDER)
age = models.IntegerField(default=0)
birthday = models.DateField()
email = models.EmailField()
# この部分を追加
def __str__(self):
return '<Name:'+self.last_name+' '+self.first_name+' age:'+str(self.age)+'>'
このstrの部分は管理画面で表示される文字列です。
定義しなくても動きますが見えづらくなりますので今回は使用します。
そしてmysite/helloディレクトリ内のadmin.pyを以下の様に編集します。
from django.contrib import admin
from .models import Personinfo
# Register your models here.
# この部分を追加
admin.site.register(Personinfo)
これで準備完了です。 そしてもう一度起動してみましょう
python manage.py runserver 0:8000
その後 <ipアドレス>:8000/adminに言ってください。
以下の様になっております。

ちゃんとアプリ名のhelloとモデル名のPersoninfoが表示されてます。
アドミンでモデルの操作
データの追加:
データの追加は追加したい場所のaddボタンをクリックして追加する事ができます。

上の画像の下のHELLOのPersoninfoの右に + Addというボタンがあります。
それをクリックすると以下の画面になります。

このフォームの各項目を入力して完成させてください。
(名前や年齢など適当で構いませんが誕生日などは一定の形式で入力しないといけないので、 お気を付けください。)
そしてPersoninfoをクリックしてください。
すると以下の様になっております。

これでデータの追加完了です。
この表示されている形式がmodels.pyで追加したstrの部分です。
もし追加しなければmodels.object(id)の形で表示されます。
データの削除:
データの削除はそのモデルに入って中のデータの左のチェックボックスにチェックを入れ、
上のアクションバーで削除します。
では実際に削除してみましょう。
今Personinfo内は以下の様になっております。

そして、削除したいデータの左のチェックボックスにチェックを入れてください チェックボックスはここです。

そして上のアクションバーで削除を選択し隣のGoボタンをクリックすると削除成功です。 アクションバーはここです。

今回一番上の
まずチェックボックスにチェックをいれます。

そして上のアクションバーを開きDelete selected Personinfosを選びます。
その後Goをクリックします。

そして削除するかしないかを確認されます。

でYes,I\’m Sureをクリックします。
これで削除の完成です!
補足:管理画面のカスタマイズ
admin.pyの中で、ModelAdminのオブジェクトを使って管理者画面をカスタマイズする事ができます。
今回はmodelの中にある各項目を表示方法、及び選択した項目でフィルターできる機能を追加してみます。
使用するModelAdminのオブジェクトは以下でございます。
- ModelAdmin.list_display:表示させる項目
- ModelAdmin.list_filter:フィルターする項目
その他色々ありますので詳しくはオフィシャルページを見てください。
ではmysite/hello/admin.pyを以下の様に編集してください。
from django.contrib import admin
from .models import Personinfo
# Register your models here.
# 以下の様に変えてください。
@admin.register(Personinfo)
class Personadmin(admin.ModelAdmin):
# 項目全てを表示する
list_display = ('last_name','first_name','gender','age','birthday','email')
# 性別でフィルターできるようにする。
list_filter = ['gender']
そして起動してみましょう。 以下の様になっております。

全ての項目が表示されてます。
そして画面の右側を見てみるとフィルター用のボックスがあります。
フィルターボックスは以下の様になります。

ではフィルターして見やすいようにもう一つデータを追加します。
(今回説明では男性のデータを追加します。)
追加後は以下の様になります。

そして右のフィルターボックスのFemaleをクリックしてみます。
すると以下の様になっております。

この様に管理画面は色々とカスタマイズや機能を追加する事が可能です。
追加できる機能は公式マニュアルを確認してください。