アプリでmodel.py
django.db インポートモデル から django.contrib.auth.models インポート( BaseUserManager、AbstractBaseUser、PermissionsMixin ) #ここにあなたのモデルを作成します壁紙。 クラスUserProfileManagerに(BaseUserManager): DEFの CREATE_USER(セルフ、電子メール、名、パスワード= なし): "" 「 ユーザーの作成 「」」 のIF ないメール: 昇給とValueError(「あなたは電子メールアドレスを持っている必要があります」) ユーザー = self.model( メール =self.normalize_email(電子メール)、 名前 = 名前、 ) user.set_password(パスワード) user.save(使用 = self._db) リターン・ユーザー・ デフcreate_superuser(自己、電子メール、名、パスワード ):""」 创建并保存超级用户 ""」 ユーザー = self.create_user( 電子メール、 パスワード = パスワード、 名前 = 名前、 ) user.is_superuser = 真 user.save(使用 = self._db) リターンユーザー クラスのUserProfile(AbstractBaseUser、PermissionsMixin): メール = models.EmailField( verbose_name = ' 邮箱' 、 MAX_LENGTH = 255 、 ユニーク = Trueの場合、 ) 名前 = models.CharField(max_lengthを= 32、verbose_name = " 用户名" ) is_active = models.BooleanField(デフォルト= 真) is_staff = models.BooleanField(デフォルト= TRUE) オブジェクト = UserProfileManagerに() USERNAME_FIELD= ' メール' #登录的字段 REQUIRED_FIELDS = [ ' 名前' ] #必须要有的字段 デフ __str__ (自己): リターンself.emailの デフget_full_name(自己): #ユーザーは、自分のメールアドレスで識別された リターンself.email デフget_short_name(自己): #ユーザーは自分のメールアドレスで識別された リターンself.emailの クラスのMeta: 権限 = ( (" make_myself' ' カスタム権威" )、 )
settings.pyファイルを設定する必要があります。
AUTH_USER_MODEL = 'app01.UserProfile'
コンフィギュレーションの下でadmin.pyアプリで:
Djangoのインポートフォーム から django.contrib.auth.models インポートグループ から django.contrib.auth.adminの輸入BaseUserAdminとしてUSERADMIN から django.contrib.auth.forms インポートReadOnlyPasswordHashFieldを から app01.models 輸入のUserProfileの クラスUserCreationForm(forms.ModelForm): 「」「新規ユーザーを作成するためのフォームが。必要なすべての付属 のフィールドを、プラス繰り返してパスワードを入力します。『』」 パスワード1 = forms.CharField(ラベル= 『密码』、ウィジェット=forms.PasswordInput) パスワード2 = forms.CharField(ラベル= ' 确认密码'、ウィジェット= forms.PasswordInput) クラスのMeta: モデル = のUserProfile フィールド =(' メール'、' 名前' ) DEF clean_password2(自己): #1 確認すること2つのパスワードエントリが一致 パスワード1 = self.cleaned_data.get(「パスワード1 」) パスワード2 = self.cleaned_data.get(「パスワード2 」) 場合はパスワード1 とパスワード2 及びパスワード1 =!パスワード2: 上げる forms.ValidationError(" 密码不匹配" ) の戻りパスワード2 デフ(=コミット、自己を救う真の): ユーザー。=スーパー()(=コミット保存偽) #密码明文根据算法改成密文 user.set_password(self.cleaned_data [ " パスワード1 " ]) 場合はコミット: user.save() の戻りユーザー クラスUserChangeForm(forms.ModelForm): ""」ユーザーを更新するためのフォーム。上のすべてのフィールド含まれ 、ユーザーが、しかし、管理者のパスワードでのフィールドを置き換え パスワードハッシュ表示フィールド。 ""」 パスワード = ReadOnlyPasswordHashField() クラスのMeta: モデル = のUserProfile フィールド =(' メール'、' パスワード'、' 名前'、' is_active '、" IS_SUPERUSER " ) デフclean_password(自己): #かかわらず、ユーザーが提供するものの、初期値を返します。 #これは、むしろフィールド上よりも、ここで行われている #のフィールドを初期値にアクセスする必要はありません 戻り self.initialの[ 「パスワード」] クラスUserProfileAdmin(BaseUserAdmin): #フォームはユーザーインスタンスを追加し、変更する フォームを= UserChangeForm add_form = UserCreationForm #フィールドには、Userモデルを表示する際に使用されます。 #これらのベースUSERADMINの上に定義オーバーライド #auth.Userの特定のフィールドを参照。 list_display =(' メール'、' 名前'、' is_staff '、' is_active '、' IS_SUPERUSER ' ) list_filter =(' IS_SUPERUSER ' 、) フィールドセット = ( (なし、{ ' フィールド':(' 電子メール'、' パスワード' )})、 (' 用户信息' { 'フィールド':(' 名前' )})、 (' 系统权限' { ' フィールド':(' IS_SUPERUSER ' ' is_staff ' ' is_active ' ' user_permissionsという' ' グループ' )})、 ) #1 add_fieldsetsでありますない標準ModelAdminの属性。USERADMIN #は、ユーザーを作成するときに、この属性を使用するget_fieldsetsを上書きします。 ' クラス':(' ワイド' 、)、 ' フィールド':(' 電子メール'、' 名'、' パスワード1 '、' パスワード2 ' )} )、 ) search_fields =(' メール' 、) 順序 =(' メール' ) filter_horizontal =(' user_permissionsという'、"グループ")
最後にpycharmレコードを生成するには、コマンドライン、およびデータベースに同期
次のコマンドを入力します。のpython3 manage.py makemigrationsが
再び入力します。のpython3は移行manage.pyの
注意:私がここに持ってはのpython3インターフェイスを入力のpython3である、あなたはpythonのかもしれません。自分の状況によると!
最後のステップ:スーパーユーザを作成します