Djangoでのカスタムユーザーの実装方法

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のカスタムユーザーを実装する方法です。今回は簡単な方の実装方法を記載しましたが、もっと柔軟にユーザーモデルを定義する方法もありますので、その方法についてはまたの機会に書きたいと思います。

おすすめの記事