はじめに
DjangoのUserモデルについて、ユーザー名(username)を削除し、代わりにメールアドレス(email)を追加するカスタマイズはよく行われるものかと思いますが、その場合にDjangoの便利な認証パッケージ「django-allauth」を使うには、settings.pyの設定をいくつかいじる必要があります。
django-allauth公式ドキュメントでの各種設定のページから、関連する設定をひとつひとつ調べた結果をまとめ、以下の通りQiitaに投稿したのですが、
それとは別の「高度な使い方」のページに、そのものズバリの解説があったので、そちらの要点を拾って意訳してみました。
カスタムユーザーモデルに関する説明の要点
カスタマイズしたUserモデルにusernameフィールドが無い場合、
ACCOUNT_USER_MODEL_USERNAME_FIELD
をNone
に設定する必要がある。これにより、django-allauthにおけるusernameに関する機能が無効になる。ACCOUNT_USERNAME_REQUIRED
もFalse
に設定する。
例として、メールアドレスをユーザーIDとして扱い、ユーザー名は持たないカスタムUserモデルの場合、settings.pyの設定は以下になる。
ACCOUNT_USER_MODEL_USERNAME_FIELD = None ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_USERNAME_REQUIRED = False ACCOUNT_AUTHENTICATION_METHOD = 'email'