0

我想在 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()

我几乎到处搜索,但找不到任何东西。如果有任何方法可以解决这个问题,请让我知道,否则如果你知道任何技巧来完成这件事,那么它也是受欢迎的。提前致谢。

4

1 回答 1

0

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

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

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

user.groups.add(group)

听起来您可以做的最后一件事是将员工与公司用户相关联,因此您可以向您的用户模型添加自我引用,如下所示:

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

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

虽然,如果您想使用公司外键,则不需要这样做,您已经必须以这种方式跟踪相关用户。但是,如果一家公司可能有多个“公司用户”,那么您可以将员工分组到每个公司。

我希望这会有所帮助。

于 2016-08-12T19:22:10.743 回答