前提・実現したいこと
Djangoで従業員を管理するアプリを作っています。
Userモデルを拡張したものを複数使ってログインの処理がしたいです。
発生している問題・エラーメッセージ
AUTH_USER_MODEL にてUserモデルを複数指定しても片方しか反映されません。
該当のソースコード
AUTH_USER_MODEL = 'A.User' AUTH_USER_MODEL = 'B.User2'
Django
1#models.py 2#Aフォルダ 3class UserManager(BaseUserManager): 4 use_in_migrations = True 5 6 def _create_user(self, email, password, **extra_fields): 7 email = self.normalize_email(email) 8 user = self.model(email=email, **extra_fields) 9 user.set_password(password) 10 user.save(using=self._db) 11 return user 12 13 def create_user(self, email, password=None, **extra_fields): 14 extra_fields.setdefault('is_staff', True) 15 extra_fields.setdefault('is_superuser', False) 16 return self._create_user(email, password, **extra_fields) 17 18 def create_superuser(self, email, password, **extra_fields): 19 extra_fields.setdefault('is_staff', True) 20 extra_fields.setdefault('is_superuser', True) 21 22 if extra_fields.get('is_staff') is not True: 23 raise ValueError('Superuser must have is_staff=True.') 24 if extra_fields.get('is_superuser') is not True: 25 raise ValueError('Superuser must have is_superuser=True.') 26 27 return self._create_user(email, password, **extra_fields) 28 29class User(AbstractBaseUser, PermissionsMixin): 30 uuid = models.UUIDField(default=uuid.uuid4, primary_key=True, editable=False) 31 username_validator = UnicodeUsernameValidator() 32 33 username = models.CharField( 34 _('username'), 35 max_length=150, 36 blank=True, 37 null=True, 38 help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'), 39 validators=[username_validator], 40 error_messages={ 41 'unique': _("A user with that username already exists."), 42 }, 43 ) 44 email = models.EmailField(_('メールアドレス'), unique=True,null=True) 45 46 is_staff = models.BooleanField( 47 _('staff status'), 48 default=True, 49 help_text=_('Designates whether the user can log into this admin site.'), 50 ) 51 52 is_active = models.BooleanField( 53 _('active'), 54 default=True, 55 help_text=_( 56 'Designates whether this user should be treated as active. ' 57 'Unselect this instead of deleting accounts.' 58 ), 59 ) 60 61 objects = UserManager() 62 63 USERNAME_FIELD = 'email' 64 REQUIRED_FIELDS = [] 65 66 class Meta: 67 db_table = 'User' 68 verbose_name = _('user') 69 verbose_name_plural = _('ユーザー') 70 71 def clean(self): 72 super().clean() 73 self.email = self.__class__.objects.normalize_email(self.email) 74 75 def email_user(self, subject, message, from_email=None, **kwargs): 76 send_mail(subject, message, from_email, [self.email], **kwargs) 77 78 def get_uuid(self): 79 return self.uuid
Django
1 #models.py 2 #Bフォルダ 3 #上記と殆ど同じため割愛 4 class Meta: 5 db_table = 'User2' 6 verbose_name = _('user') 7 verbose_name_plural = _('ユーザー')
試したこと
AUTH_USER_MODEL =["A.User","B.User2"]
などを試したが反映されず
補足情報(FW/ツールのバージョンなど)
setteing.py
|A--models.py(A.User)
|B--models.py(B.User2)
Django version 3.1.6
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。