django-allauthでカスタマイズしたUserモデルを使う場合の設定について

はじめに

DjangoのUserモデルについて、ユーザー名(username)を削除し、代わりにメールアドレス(email)を追加するカスタマイズはよく行われるものかと思いますが、その場合にDjangoの便利な認証パッケージ「django-allauth」を使うには、settings.pyの設定をいくつかいじる必要があります。

django-allauth公式ドキュメントでの各種設定のページから、関連する設定をひとつひとつ調べた結果をまとめ、以下の通りQiitaに投稿したのですが、

qiita.com

それとは別の「高度な使い方」のページに、そのものズバリの解説があったので、そちらの要点を拾って意訳してみました。

カスタムユーザーモデルに関する説明の要点

  • カスタマイズしたUserモデルにusernameフィールドが無い場合、ACCOUNT_USER_MODEL_USERNAME_FIELDNoneに設定する必要がある。これにより、django-allauthにおけるusernameに関する機能が無効になる。

  • ACCOUNT_USERNAME_REQUIREDFalseに設定する。

例として、メールアドレスをユーザーIDとして扱い、ユーザー名は持たないカスタムUserモデルの場合、settings.pyの設定は以下になる。

ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = 'email'