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