0

I have followed these [1,2,3] links to create a custom user model by extending AbstractBaseUser class. I am storing login information of three type of users lets say teacher, Admin and students in this table. USERNAME field is emailId.
I want to make emailId unique among one type of users. In other words, in my system student can register as teacher as well with same emailId. But since emailId is USERNAME field and hence unique, I am unable to achieve this.
Please suggest how can I do this in Django application.

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

I am using other models like StudentsDetails, TeacherDetails with foreign key to UserModel to store extra information.

Anurag Rana
  • 1,429
  • 2
  • 24
  • 48

0 Answers0