如何在 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",那么您可以将员工分组到每个。
希望对您有所帮助。
我想在 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",那么您可以将员工分组到每个。
希望对您有所帮助。