カスタムユーザーモデルを作成する
カスタムユーザーモデルを作成する
djangoでは最初から使えるユーザーモデルが存在するのですが柔軟に仕様変更が出来ません。その為公式ではプロジェクトの最初から「カスタムユーザーモデル」の利用を強く推奨しているとの事です。今回はカスタムユーザーモデルを作成してみましょう。
参考:
django | AbstractUser でカスタムユーザーを作ってマイグレーションするまでの手順のデモ
verbose_nameを設定すると何が変わるのか【before/afterで解説】
アプリの作成
今回accountsと言うアプリ名で作成します。
python3.6 manage.py startapp accounts
アプリ登録
先ほど作成したアプリを読み込みます。
#/django_project/config/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'accounts.apps.AccountsConfig',#追加
]
モデル定義
「AbstractUser」を継承してモデルを作成します。
「verbose_name_plural」は管理画面での表示名を指定しています。
※pluralは「s」の自動付与を無効化します。
#/django_project/accounts/models.py
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
class Meta:
verbose_name_plural = 'CustomUser'
モデルの指定
どのユーザーモデルをプロジェクトで使用する設定です。
ここでは先ほど作成した「カスタムユーザーモデル」を指定しています。
※指定しないとデフォルトのユーザーモデルを参照します。
#/django_project/config/settings.py
#--カスタムユーザーモデル指定-------------------------------
AUTH_USER_MODEL = 'accounts.CustomUser'
管理画面に登録
先ほど作成したモデルを管理画面で追加/編集できるようにするためにカスタムユーザーモデルを登録します。
#/django_project/accounts/admin.py
from django.contrib import admin
from .models import CustomUser
admin.site.register(CustomUser)
データベースを作成
下のコマンドを作成したモデルの内容をデータベースに反映させます。
python3.6 manage.py makemigrations
python3.6 manage.py migrate
無事customuserが作成されたのが確認出来ました。
MariaDB [django]> show columns from accounts_customuser;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| password | varchar(128) | NO | | NULL | |
| last_login | datetime(6) | YES | | NULL | |
| is_superuser | tinyint(1) | NO | | NULL | |
| username | varchar(150) | NO | UNI | NULL | |
| first_name | varchar(30) | NO | | NULL | |
| last_name | varchar(150) | NO | | NULL | |
| email | varchar(254) | NO | | NULL | |
| is_staff | tinyint(1) | NO | | NULL | |
| is_active | tinyint(1) | NO | | NULL | |
| date_joined | datetime(6) | NO | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
ディスカッション
コメント一覧
まだ、コメントがありません