前提
Django2.1(授業用の環境)
Python3.6
Eclipse4.1
参考にしたサイト様
https://daeudaeu.com/django-abstractbaseuser/
実現したいこと
- カスタムユーザを用いて、管理画面に入れるようにしたい。
発生している問題・エラーメッセージ
カスタムユーザを用いてログインできない。
該当のソースコード
model.py
python
1class UserManager(BaseUserManager): 2 def create_user(self, email, password=None,**extra_fields): 3 if not email: 4 raise ValueError('Users must have an email address') 5 6 user = self.model( 7 email=self.normalize_email(email), 8 ) 9 user.set_password(password) 10 user.save(using=self._db) 11 return user 12 13 def create_superuser(self, email, password,**extra_fields): 14 user = self.create_user( 15 email=self.normalize_email(email), 16 password=password, 17 ) 18 19 user.is_admin =True 20 user.is_staff =True 21 user.is_superuser =True 22 user.isSystemAdmin =True 23 user.isContractAdmin=True 24 25 user.save(using=self._db) 26 return user 27 28 29#利用者 30class User(AbstractBaseUser,PermissionsMixin): 31 empnum = models.CharField(validators=[MinLengthValidator(6), 32 MaxLengthValidator(6), 33 RegexValidator(r'^[0-9]*$','設定できるのは数字のみです')], 34 max_length=6, 35 verbose_name='番号', 36 primary_key=True, 37 unique=True) 38 password = models.CharField(max_length=100, 39 verbose_name='パスワード') 40 name = models.CharField(max_length=30, 41 verbose_name='氏名') 42 email = models.EmailField(max_length=150, 43 verbose_name='メールアドレス') 44 ChoiceList = ( 45 (False, '0:権限なし'), 46 (True, '1:権限あり'), 47 ) 48 choiceA = models.BooleanField(choices=ChoiceList, 49 verbose_name='A', 50 default=False) 51 choiceB = models.BooleanField(choices=ChoiceList, 52 verbose_name='B', 53 default=False) 54 55 first_name = None 56 first_name = None 57 last_name = None 58 date_joined = None 59 groups = None 60 last_login= None 61 is_superuser = models.BooleanField(default=False) 62 is_staff = models.BooleanField(default=True) 63 is_admin = models.BooleanField(default=False) 64 is_active = models.BooleanField(default=True) 65 66 username = "empnum" 67 USERNAME_FIELD = "empnum" 68 objects = UserManager() 69 REQUIRED_FIELDS = ["email"] 70 71 class Meta: 72 verbose_name='利用者' 73 def __str__(self): 74 return self.name
試したこと
カスタムユーザーモデルを使用するように、setting.pyのAUTH_USER_MODELを変更済み
admin.pyにて、admin.site.register(User)
を追加済み。
補足情報(FW/ツールのバージョンなど)
把握している事
Djangoの管理サイトにカスタムユーザを使用して入る為には、
- カスタムユーザの作成
- カスタムユーザモデルを使用するようにsetting.pyの変更
- 管理サイトの設定を変更(admin.py)
- カスタムユーザモデルに必要なメソッド(is_staff()など)の追加
が必要だと考ています。
現状
createsuperuser() で番号、メールアドレス、パスワードでの登録は可能でした。
makemigration、migrationを行いました。
上記で不足している点、改善すべき点を教えて頂きたいです。
あなたの回答
tips
プレビュー