Djangoにはユーザーモデルについても標準で用意されていますが、Djangoの公式ドキュメントでも推奨されておらず、基本的にはカスタムユーザーモデルを実装して使うことになります。
カスタムユーザーの実装は最初のマイグレーションの前に行う
カスタムユーザーの実装は、Djangoの環境を作ってすぐに実施するのが適切です。
一度、モデルをマイグレーションすると、その後にカスタムユーザーを実装するのは大変だからです。本番リリースする前であれば不可能ではないのですが、それでもパッと1つコマンドを打てば問題を解決できるというものでも無いので、できれば最初のマイグレーションを行う前にカスタムユーザーの実装を行いましょう。
カスタムユーザーの実装方法
カスタムユーザーの実装方法には主に2種類ありますが、今回はシンプルに実装できる方法をご紹介します。
アカウント用のアプリを追加して、そのアプリ内のフォルダに作成されたmodels.py ファイルにカスタムユーザーの定義をします。
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
birthday = models.DateField()
次に、settings.py ファイルに以下の記載を追加します。サンプルはaccountというアプリのモデルにカスタムユーザーを実装する場合の例です。
AUTH_USER_MODEL = "account.CustomUser"
あとは以下の2つのコマンドでマイグレーションをすればカスタムユーザーの実装は完了です。(コマンドはDocker Composeを使用しており、webというコンテナを定義している場合です)
docker-compose run web python3 manage.py makemigrations
docker-compose run web python3 manage.py migrate
以上がDjangoのカスタムユーザーを実装する方法です。今回は簡単な方の実装方法を記載しましたが、もっと柔軟にユーザーモデルを定義する方法もありますので、その方法についてはまたの機会に書きたいと思います。