如何使USERNAME字段在User Mod中对多种类型的用户唯一

2024-04-18 01:19:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我遵循这些 [123] 链接,通过扩展AbstractBaseUser类来创建自定义用户模型。我在这个表中存储了三类用户的登录信息,比如教师、管理员和学生。USERNAME字段是emailId
我想使emailId在一类用户中唯一。换句话说,在我的系统中,学生也可以用相同的emailId注册为教师。但由于emailIdUSERNAME字段,因此是唯一的,所以我无法做到这一点。
请建议如何在Django应用程序中执行此操作。你知道吗

用户模型:

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']

我正在使用其他模型,如studentsdeails、TeacherDetails和UserModel外键来存储额外的信息。你知道吗


Tags: 用户模型falsetruemodelstypeusernamenull

热门问题