我想在django app中创建多种类型的用户,例如一个用于公司,一个用于员工。
我的想法是公司将为自己注册,然后员工将由公司管理员通过他/她的仪表板创建。
创建后,员工将直接登录。
所以(如果可能的话)只有一种签到形式可以用于公司和员工。
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()
我几乎到处搜索但找不到任何东西。如果有任何方法可以解决这个问题,请让我知道,如果你知道任何技巧来完成这件事,那么也欢迎。 提前谢谢。
答案 0 :(得分:0)
您可以为不同类型的用户创建群组:
Group.objects.create(name='Company')
然后将用户分配到相应的组:
user.groups.add(group)
听起来你可以做的最后一件事是将员工与公司用户联系起来,这样你就可以像这样为你的用户模型添加一个自我引用:
company_user = models.ForeignKey("self", null=True, blank=True)
因此,对于这些员工,您可以将用户与该公司用户关联,并将其留空以供公司用户使用。
虽然如果您想使用公司外键,您不需要这样做,但您必须以这种方式跟踪相关用户。但是,如果一家公司可能有几个“公司用户”,那么您可以将员工分组到每个用户。
我希望有所帮助。