ここから、カスタマイズしたユーザーモデルの実装を進めていきましょう。
コード-BASE/login/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
age = models.IntegerField(null=True)
AbstractUserは、ハッシュ化されたパスワードの管理など、ユーザー情報を安全に管理するための機能を備えたユーザークラスのことです。
デフォルトのUserモデルが備えているフィールド(usenameはメールアドレスなど)の情報も使うことができます。
今回は、デフォルトのUserモデルにageというフィールドを追加しました。
これでひとまずカスタマイズされたユーザーモデルは完成です。
Userモデルの変更をdjangoに伝える
次に、デフォルトで使うユーザーモデルを変えることをdjangoに伝えていきましょう。
具体的には、settings.pyファイルの中で変更していきます。
コード-BASE/loginproject/settings.py
AUTH_USER_MODEL = 'login.CustomUser'
この設定をしなければ、デフォルトのUserモデルが使われてしまいますので注意しましょう。
settings.pyファイルを変更した上で、makemigrationをしてどのようなテーブルが作られているかをみていきましょう。
コマンドラインBASE
$ python manage.py makemigrations
これで、CustomUserテーブルの原型となるファイルができました。このファイルの中身を見ていきましょう。
(実際は非常に長くなってしまいますので、fieldの中身だけ取り出しています。)
コード-BASE/login/migratoins/0001_initial.py
id, password, last_login, is_superuser, username, first_name, last_name, email, is_staff, is_active, date_joined, age, groups, user_permissions
デフォルトのユーザーモデルで使われるフィールドに加え、ageフィールド(太字の部分)もしっかりと作られていることを確認しましょう。
これで、CustomUserモデルを作り、このモデルを使うことをdjangoに伝えることができました。
次に、ユーザーを登録するためのフォームを作っていきましょう。