I am trying to make username unique = false as there are cases where 
username is not needed. Since i am using email address to login.
But with the django user model, how do i customise it ? 

Here is the code for my current user model:

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.contrib.auth.models import UserManager
from django.db.models import Q
from django.core.validators import RegexValidator


class CustomUserManager(UserManager):

    def get_by_natural_key(self, username):
        return self.get(
            # this comment is to prevent user from using username to login
            # Q(**{self.model.USERNAME_FIELD: username}) |
            Q(**{self.model.EMAIL_FIELD: username})
        )


class MyUser(AbstractUser):
    userId = models.AutoField(primary_key=True)
    gender = models.CharField(max_length=6, blank=True, null=True)
    nric = models.CharField(max_length=40, blank=True, null=True)
    birthday = models.DateField(blank=True, null=True)
    birthTime = models.TimeField(blank=True, null=True)
    ethnicGroup = models.CharField(max_length=30, blank=True, null=True)
    favoriteClinic = models.CharField(max_length=50, blank=True, null=True)
    appVer = models.CharField(max_length=50, blank=True, null=True)
    osVer = models.CharField(max_length=50, blank=True, null=True)
    mobileType = models.IntegerField(blank=True, null=True)
    country_code = models.IntegerField(blank=True, null=True)
    # mobile_regex = RegexValidator(regex=r'^(\+\d{1,3})?,?\s?\d{8,13}$', 
message="Phone number must not consist of space and requires country code. eg : 
+6591258565")
    mobileNo = models.CharField(max_length=25, blank=True, null=True)  # 
validators should be a list
    height = models.FloatField(blank=True, null=True)
    weight = models.FloatField(blank=True, null=True)
    bloodtype = models.CharField(max_length=3, blank=True, null=True)
    allergy = models.CharField(max_length=30, blank=True, null=True)
    # image1 = models.ImageField(upload_to=)
    # image = models.BinaryField(editable=True, blank=True, null=True)
    # displaypicture = models.ImageField
    objects = CustomUserManager()

    def __str__(self):
        return self.username

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/81ce75ad-bada-4975-8dbc-df41de40b392%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to