如何使USERNAME字段对于用户模型中的多种类型的用户是唯一的

时间:2017-06-08 18:00:20

标签: python django

我已按照这些 [123] 链接通过扩展AbstractBaseUser类来创建自定义用户模型。我存储三种类型用户的登录信息让我们说教师,管理员和学生在这个表中。 USERNAME字段为emailId 我希望emailId在一种类型的用户中独一无二。换句话说,在我的系统中,学生也可以使用相同的emailId注册为教师。但由于emailIdUSERNAME字段,因此是唯一的,我无法实现这一目标 请建议我如何在Django应用程序中执行此操作。

UserModel:

class UserModel(AbstractBaseUser):
    user_type_choices = (
        (constants.USER_TYPE_ADMIN, 'Admin'),
        (constants.USER_TYPE_INSTITUTE, 'Institute'),
        (constants.USER_TYPE_STUDENT, 'Student')
    )
    sys_id = models.AutoField(primary_key=True, blank=True)        
    name = models.CharField(max_length=127, null=False, blank=False)    
    email = models.EmailField(max_length=127, unique=True, null=False, blank=False)
    mobile = models.CharField(max_length=10, unique=True, null=False, blank=False)  
    user_type = models.PositiveSmallIntegerField(choices=user_type_choices, null=False, blank=True) 
    is_staff = models.BooleanField()
    is_active = models.BooleanField(default=True)

    objects = MyUserManager()

    USERNAME_FIELD = "email"
    REQUIRED_FIELDS = ['name', 'mobile', 'user_type','is_staff']

我使用其他模型,如StudentsDetails,TeacherDetails和UserModel的外键来存储额外信息。

0 个答案:

没有答案