Использование различных моделей для пользователя и суперпользователя в django

У меня есть модель Student, и я также буду создавать другую модель под названием Teacher. Но я хочу, чтобы одна модель под названием Admin была суперпользователем для обеих этих моделей в их соответствующих менеджерах. Как мне этого добиться?

Вот код, который у меня есть на данный момент:

class StudentManager(BaseUserManager):
    def create_user(self, usn, email, first_name, last_name, initials, branch, **extra_fields):
        if not email:
            raise ValueError('Email for user must be set.')
        email = self.normalize_email(email)

        user = self.model(
            usn=usn,
            email=email,
            first_name=first_name,
            last_name=last_name,
            initials=initials,
            branch=branch,
            **extra_fields)
        
        user.set_password('password')
        user.save()

        return user
    
    def create_superuser(self, name, email, **extra_fields):
        if not email:
            raise ValueError('Email for user must be set.')
        email = self.normalize_email(email)

        admin = self.model(                 # but self.model refers to Student, not Admin
            email=email,
            name=name,
            **extra_fields)
        
        admin.set_password('password')
        admin.save()

        return admin

class Student(AbstractBaseUser, PermissionsMixin):
    usn = models.CharField(max_length=10, primary_key=True, unique=True, editable=False)
    email = models.EmailField(max_length=254, unique=True)
    first_name = models.CharField(max_length=50, null=False)
    last_name = models.CharField(max_length=50, null=False)
    initials = models.CharField(max_length=10, null=True)
    branch = models.CharField(max_length=5, null=False, editable=False)

    objects = StudentManager()

    USERNAME_FIELD = 'usn'
    EMAIL_FIELD = 'email'
    REQUIRED_FIELDS = ['email', 'first_name', 'last_name', 'branch']

class Admin(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(max_length=254, unique=True)
    name = models.CharField(max_length=100, null=False)

    # objects = StudentManager()

    USERNAME_FIELD = 'name'
    EMAIL_FIELD = 'email'
    REQUIRED_FIELDS = ['email', 'name']

Вот ошибка, которую я получаю:

api.Admin.groups: (fields.E304) Reverse accessor for 'api.Admin.groups' clashes with reverse accessor for 'api.Student.groups'.
Вернуться на верх