我已按照这些 [1,2,3] 链接通过扩展AbstractBaseUser
类来创建自定义用户模型。我存储三种类型用户的登录信息让我们说教师,管理员和学生在这个表中。 USERNAME
字段为emailId
我希望emailId
在一种类型的用户中独一无二。换句话说,在我的系统中,学生也可以使用相同的emailId
注册为教师。但由于emailId
是USERNAME
字段,因此是唯一的,我无法实现这一目标
请建议我如何在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的外键来存储额外信息。