Добавить пользователя в группу в сигнале post_save

Я хочу добавить пользователя в группу после сохранения объекта пользователя. Каждый пользователь имеет тип пользователя, соответствующий группе, к которой он принадлежит. Например, если тип_пользователя равен 2, то пользователь принадлежит к группе_3, и так далее. Вот мой код:

class User(AbstractBaseUser, PermissionsMixin):
    """ Custom user model """
    USER_TYPE = ((1, 'HOD'), (2, 'Staff'), (3, 'Student'))
    email = models.EmailField(
        _("Email Address"),
        max_length=255,
        unique=True,
        help_text="Ex: example@example.com",
    )
    eec = models.ForeignKey(
        EEC, on_delete=models.CASCADE, null=True, related_name='eec',blank=True)
    is_staff = models.BooleanField(_("Staff status"), default=False)
    is_active = models.BooleanField(_("Active"), default=True)
    date_joined = models.DateTimeField(_("Date Joined"), auto_now_add=True)
    last_updated = models.DateTimeField(_("Last Updated"), auto_now=True)
    user_type = models.IntegerField(default=1, choices=USER_TYPE)
    lastName = models.CharField(default='', max_length=250)
    firstName = models.CharField(default='', max_length=250)
    objects = UserManager()
    USERNAME_FIELD = "email"

    def __str__(self):
        return self.email

class Teacher(models.Model):
    admin = models.OneToOneField(User, on_delete=models.CASCADE)

@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        if instance.user_type == 1:
            Admin.objects.create(admin=instance)
        if instance.user_type == 2:
            try:

                Teacher.objects.create(admin=instance)
                g1 = Group.objects.get(name='teacher')
                instance.groups.add(g1)


            except:
                print("Exception")
        if instance.user_type == 3:
            Student.objects.create(admin=instance)



Basically, when I save the user model with a user type of 2, the group does not get updated

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