9

デフォルトの Django ユーザー モデルの email フィールドをユーザー名として使用しようとしています。私は Django 1.5 を使用していますが、デフォルトのユーザーにUSERNAME_FIELDプロパティがあることがわかりました。

USERNAME_FIELD = 'email'私のプロジェクトでは、ユーザー モデルで以下をデフォルトとして設定したいと考えています。

この小さいながらも基本的な微調整は、ユーザー モデルで変更したい唯一のものです。USERNAME_FIELDをサブクラス化せずに を変更する方法があるかどうか疑問に思っていましたAbstractUserこの質問で、 をサブクラス化しAbstractUser、カスタム マネージャーを作成できることがわかりました。

そのプロパティを変更する簡単な方法があるかどうか疑問に思っていましたか?

AbstractUserそうでない場合、電子メール フィールドをユーザー名として使用するように拡張する最小限の方法は何でしょうか?

4

2 に答える 2

4
#Your app's __init__.py

from django.contrib.auth.models import User

User.USERNAME_FIELD = 'email'
于 2013-03-28T12:19:39.217 に答える
1

AbstractUser ではなく AbstractBaseUser を拡張して、新しいカスタム ユーザー クラスを作成する必要があります。

そこで USERNAME_FIELD としてメールを宣言します

必要に応じて、BaseUserManager から拡張されたカスタム ユーザー マネージャーを宣言して、必要なユーザー名の制約を処理することもできます。そのマネージャーの create_user 関数からユーザー名を削除できます

于 2014-07-16T13:25:08.970 に答える