django-交換したカスタム・ユーザー・モデル

https://docs.djangoproject.com/en/dev/topics/auth/customizing/#substituting-a-custom-user-model

カスタム代入  User モデルを

Djangoは、設定値がカスタマイズされたモデルを指すように設けられている、デフォルトのユーザーモードをオーバーライドすることができ

= AUTH_USER_MODEL「users.User」
#usersアプリ名がある
#USERユーザーモデル

  

プロジェクトを開始するときに、カスタム・ユーザー・モデルを使用して

 新しいプロジェクトを開始する場合は、カスタム・ユーザー・モデルは、勧告のより価値がある設定、デフォルトのユーザーモデルが需要を満たすために持っている場合でも、モデルとデフォルトのユーザーモデルは同じですが、あなたが必要なときに行うことができますそれをカスタマイズすることができます。

django.contrib.auth.modelsからAbstractUserのインポート

:クラスのユーザー(AbstractUser)
    のパスを

  

作成または実行する任意の移行をすることを忘れないでください、それにAUTH_USER_MODELポイントを聞かせすることを忘れないでくださいmigrate 前にこのことを行います。

また、このモデルはadmin.pyでアプリに登録します

django.contribインポート管理者から
django.contrib.auth.adminインポートUSERADMINから
.modelsインポートユーザーから

admin.site.register(ユーザー、USERADMIN)

  

カスタム・ユーザー・モデルを指定します

モデルには、ユーザーに関連するすべての情報は、複雑なクエリのために、関連するモデルを避けるために。

デフォルトの認証バックエンドを使用する場合は、あなたのモデルは、ユーザ名、または電子メールアドレス、またはその他の一意のキーをすることができ、識別のための一意のフィールドを持っている必要があります。

最も簡単な方法は、互換性のあるカスタムユーザーモデルを構築しますAbstractBaseUserAbstractBaseUser 継承され、ユーザモデルの実現の中核を提供します。パスワードハッシュとのパスワードリセットトークンを含みます。

詳細に関するいくつかの実装:

myUserクラス(AbstractBaseUser):
    識別子= models.CharField(= 40 MAX_LENGTH、UNIQUE = TRUE)
    ... 
    フィールド名のUSERNAME_FIELD = '識別子' #記述文字列は、ユーザモデルの一意の識別子として使用されています。これは通常、ユーザー名のいくつかの並べ替えですが、また、電子メールアドレスまたはその他の一意の識別子することができます。

  

myUserクラス(AbstractBaseUser):
    ... 
    DATE_OF_BIRTH = models.DateField()
    高さ= models.FloatField()
    ... 
    required_fields = [ 'DATE_OF_BIRTH'、 '高さ']#のcreatesuperuser管理コマンドプロンプトを通じてユーザー名フィールドを作成するときリスト。システムは、各フィールドの値を提供するようユーザーに促します。

  

アクティブです

ユーザーが考慮されているかどうかを示すBooleanプロパティ「アクティブ」。この属性AbstractBaseUserのデフォルトプロパティを提供しますTrue

 

次のプロパティと、次のいずれかの方法に使用することができますAbstractBaseUser的子类

 set_passwordraw_password

パスワードハッシュのために元のパスワードを保存

 

カスタム・ユーザー・モデルのマネージャーを書きます

また、あなたのユーザー定義のカスタムマネージャのためのモデルなければなりません。ユーザーモデルのみを定義している場合はusernameemailis_staffis_activeis_superuser、  last_loginおよびdate_joinedフィールド、Djangoのデフォルト、あなただけのDjangoをインストールすることができますよう、  ユーザーモデルが異なるフィールドを定義する場合は、カスタムマネージャを定義する必要がありますそして、拡大 他の二つの方法の提供を:UserManagerBaseUserManager

 クラス models.CustomUserManager

create_user()的原型[ユーザー名]フィールドに加え、パラメータとして必要なすべてのフィールドを受け入れる必要があります。たとえば、ユーザーモデルが使用された場合email作为用户名字段、およびdate_of_birth作为必要なフィールドが、create_userそれは次のように定義する必要があります。

 
def create_user(self, email, date_of_birth, password=None):
    # create user here
    ...

  

 

おすすめ

転載: www.cnblogs.com/jabbok/p/11250063.html