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.
Спасибо!