如何在 Django 中使用自定义用户模型创建多种类型的用户?

How to create multiple types of user with custom user model in django?

我想在 Django 应用程序中创建多种类型的用户,例如一种用于公司,一种用于员工。

我的想法是公司将自行注册,然后公司管理员将通过 his/her 仪表板创建员工。

创建后员工直接登录

因此(如果可能的话)公司和员工只能使用一个登录表。

class Company(models.Model):
    name = models.CharField(max_length=150)
    logo = models.CharField(max_length=1000, blank=True)
    admin_name = models.CharField(max_length=200)
    admin_email = models.CharField(max_length=200) # can be used as 'username'
    website = models.CharField(max_length=200, blank=True)

class CustomUserManager(auth_models.BaseUserManager):
    def create_user(self, email, first_name, emp_id, password):
       #
    def create_superuser(self, email, first_name, emp_id, password):
       #

class Users(auth_models.AbstractBaseUser, auth_models.PermissionsMixin):
    company = models.ForeignKey(Company, on_delete=models.CASCADE, null=True)
    first_name = models.CharField(max_length=200)
    last_name = models.CharField(max_length=200)
    profile_pic = models.CharField(max_length=2000, blank=True)
    email = models.EmailField(unique=True, null=True)
    emp_id = models.CharField(max_length=50)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['first_name', 'emp_id', ]
    objects = CustomUserManager()

我几乎找遍了所有地方,但一无所获。如果有任何方法可以解决此问题,请告诉我,否则如果您知道完成此操作的任何技巧,那么也欢迎您。 提前致谢。

您可以只为不同类型的用户创建群组:

Group.objects.create(name='Company')

然后将用户分配到适当的组:

user.groups.add(group)

听起来你可以做的最后一件事是将员工与公司用户相关联,因此你可以像这样向你的用户模型添加一个自引用:

company_user = models.ForeignKey("self", null=True, blank=True)

因此,对于这些员工,您可以将用户与该公司用户相关联,并将公司用户本身留空。

不过,如果您想使用公司外键,则无需这样做,您已经必须通过这种方式跟踪相关用户。但是,如果一家公司可能有几个 "company users",那么您可以将员工分组到每个。

希望对您有所帮助。