如何在django中使用自定义用户模型创建多种类型的用户?
我想在django应用程序中创建多种类型的用户,例如一个用于公司,一个用于员工。如何在django中使用自定义用户模型创建多种类型的用户?
我想到的是公司将自己注册,然后员工将由公司管理员通过他/她的仪表板创建。
创建后员工将直接登录。
因此(如果可能)只有一个登录表单可以用于公司和员工。
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)
因此,对于这些员工,您可以将该用户与该公司用户相关联,并将其留给公司用户本身为空。
虽然如果您想使用公司外键,您不需要那样做,但您已经有了这种方式来跟踪相关用户。但是,如果一个公司可能有几个“公司用户”,那么可以将员工分组到每个公司。
我希望有帮助。
谢谢...这工作..! :)对不起,虽然晚了回复.. – Niraj
太棒了!很高兴我能帮上忙! –
此功能包含在Django中:https://docs.djangoproject.com/en/1.10/topics/auth/default/#groups – IanAuld