【问题标题】:How to create multiple types of user with custom user model in django?如何在 django 中使用自定义用户模型创建多种类型的用户?
【发布时间】:2016-12-19 20:09:50
【问题描述】:

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

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

【问题讨论】:

标签: python django multiple-users django-custom-user


【解决方案1】:

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

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

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

user.groups.add(group)

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

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

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

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

希望对你有帮助。

【讨论】:

  • 太棒了!很高兴我能帮上忙!
猜你喜欢
  • 1970-01-01
  • 2015-08-10
  • 2019-10-17
  • 2020-07-27
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
相关资源
最近更新 更多