Django Условные сигналы (или лучшее решение)

У меня есть два типа пользователей, UserTypeA и UserTypeB. Я создал модель CustomUser и добавил флаг is_userA, is_userB в эту модель. При регистрации я успешно устанавливаю флаг для каждого типа пользователя правильно.

Я создал модель для UserTypeAProfile. Когда я регистрирую нового пользователя, я могу успешно создать экземпляр Profile. Проблема в том, что это происходит для обоих типов пользователей. Я хочу, чтобы это происходило только для того типа пользователя, который регистрируется. Ниже приведена модель CustomUser.

class CustomUser(AbstractUser):
email = models.EmailField(_('email address'), unique=True)
is_userA = models.BooleanField(default=False)
is_userB = models.BooleanField(default=False)

def __str__(self):
    return self.email

Ниже представлена модель профиля UserTypeAProfile

class UserTypeAProfile(models.Model):
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
bio = models.CharField(max_length=50, blank=True)

@receiver(post_save, sender=CustomUser)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        UserTypeAProfile.objects.create(user=instance)

def __str__(self):
    return str(self.user)

Я пробовал:

    @receiver(post_save, sender=CustomUser)
    def create_user_profile(sender, instance, created, **kwargs):
    if CustomUser.is_userA:
        UserTypeA.objects.create(user=instance)

Но, похоже, это не работает, все еще когда я тестирую, создавая оба userTypes, я получаю экземпляр профиля для обоих типов.

Есть ли хороший способ сделать это? В основном, когда пользовательА регистрируется, я хочу создать для него профиль с определенными атрибутами UserA, а когда пользовательВ регистрируется, я хочу создать для него профиль с определенными атрибутами UserB.

Спасибо!

Вернуться на верх