У меня есть две модели профиля пользователя, каждая из которых относится к пользовательскому пользователю
user / models.py
class Role(models.TextChoices):
ONE = 'ON', 'One'
TWO = 'TW', 'Two'
class ProfileOne(models.Model):
user = models.OneToOneField('CustomUser', on_delete=models.CASCADE)
class ProfileTwo(models.Model):
user = models.OneToOneField('CustomUser', on_delete=models.CASCADE)
PROFILE_MAP = {
Role.ONE: ProfileOne,
Role.TWO: ProfileTwo
}
class CustomUser(AbstractUser):
# fields definition
role = models.CharField(max_length=2, choices=Role.choices, null=True)
objects = CustomUserManager()
def create_profile(self, role):
profile = PROFILE_MAP[role](user=self)
profile.save()
return profile
Мне нужно создать профиль для пользователя после регистрации , Я пытался сделать это в методе create_user()
пользовательского менеджера, но он не работает.
user / Manager.py
class CustomUserManager(BaseUserManager):
def create_user(self, first_name, last_name, email, role, password, **extra_fields):
# user initialization
user.save()
user.create_profile(role)
return user
В чем проблема ? И подходят ли для этого менеджеры?