How to implement a Custom User Model in Django

Django comes with a built-in user model, but using it as-is is not recommended—even in the official Django documentation. Instead, it is generally advised to implement and use a custom user model from the beginning.

Custom user model implementation should be done before the initial migration

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

おすすめの記事