Django user model username (unique=False)

django custom user model
django-login with email or username
django user model foreign key
django remove username
django custom user login
django request, user
django permissions
django user email unique

I have seen many of the solution but none of it seems to be answering the question.

My user model is using AbstractUser right now. Is there a way to make username(unique = False)

Since i wanted to allow user to ba able to have duplication of same username, as the login im am using is by email address and password

Below is the code that i tried but doesnt work.

Code:

class MyUser(AbstractUser):
    username = models.CharField(max_length=30, unique=False)

error:

customuser.MyUser: (auth.E003) 'MyUser.username' must be unique because it is named as the 'USERNAME_FI ELD'

Try to specify email as username field with USERNAME_FIELD attribute:

class MyUser(AbstractUser):
    username = models.CharField(max_length=30, unique=False)
    USERNAME_FIELD = 'email'

Django - Allow duplicate usernames, django.contrib.auth.models import User User._meta.get_field('username'). _unique = False. Note that this won't change the database unique� Stack Overflow Public questions and answers; Teams Private questions and answers for your team; Enterprise Private self-hosted questions and answers for your enterprise; Talent Hire technical talent

class MyUser(AbstractUser):
    username = models.CharField(max_length=30, unique=False)
    email = models.EmailField(max_length=255, unique=True)
    USERNAME_FIELD = 'email'

Django how to make user model username unique=False, from django.db import models from django.contrib.auth.models import AbstractUser from django.contrib.auth.models import UserManager The Django User Model is part of the Django Authentication package. It provides you with a standard model that is used as a backbone for your user accounts. You can find the standard fields here. Extending the Django User Model # There are various ways to extend the User model with new fields. You might want to do this, when you want to add

A non-unique username field is allowed if you use a custom authentication backend that can support it.

If you want to use django's default authentication backend you cannot make username non unique.

You will have to implement a class with get_user(user_id) and authenticate(request, **credentials) methods for a custom backend.

You can read it in the documentation here. https://docs.djangoproject.com/en/2.1/topics/auth/customizing/#specifying-custom-user-model

Customizing authentication in Django, You can extend the default User model, or substitute a completely customized model. That means that checking for object permissions will always return False or A non-unique username field is allowed if you use a custom authentication� Extending User Model Using a Custom Model Extending AbstractUser. This is pretty straighforward since the class django.contrib.auth.models.AbstractUser provides the full implementation of the default User as an abstract model. from django.db import models from django.contrib.auth.models import AbstractUser class User (AbstractUser): bio = models.

django.contrib.auth | Django documentation, Usernames may contain alphanumeric, _ , @ , + , . and - characters. If you need a longer length, please use a custom user model. because MySQL can only create unique indexes with 191 characters in that case by default. as has_perm() and the authentication in the Django admin all return False for inactive users. django-users mailing list Search for information in the archives of the django-users mailing list, or post a question. #django IRC channel Ask a question in the #django IRC channel, or search the IRC logs to see if it’s been asked before. Ticket tracker Report bugs with Django or Django documentation in our ticket tracker. Download:

Creating a Custom User Model in Django, from django.contrib.auth.models import User User._meta.get_field('username'). _unique = False. Note that this won't change the database unique constraint on� At this stage, went on to the admin page and tested to login there too with the created account and got Made sure the custom user model had is_active, is_superuser and is_staff and checked if that would fix the issue but it didn't. class MyUserManager(BaseUserManager): def create_user(self, username, password, **extra_fields): user = self.model

Django - Allow duplicate usernames, Django: Custom User model without username field (and using email in EmailField( unique=True, max_length=255, blank=False, ) # All� value (the :attr:~django.db.models.Field.primary_key by default) of an existing instance. The current behavior of clean() and UserManager._create_user() does not support foreign keys as it should expect to be handed model instances and not call normalize_username or as the patch suggests, normalize_username should only act on strings.

Comments
  • Can this help with what you're trying to do: stackoverflow.com/questions/37332190/django-login-with-email?
  • @bonidjukic I already can login using email. I just need to make username unique = false. Thats it
  • The code you have should work. Have you updated your settings to instruct Django to use your custom User model?
  • customuser.MyUser: (auth.E003) 'MyUser.username' must be unique because it is named as the 'USERNAME_FI ELD'. This is the error i get
  • You should add that error to your question, that would make it much more clear.
  • then the unique=False would ruin the whole validation of unique email
  • email is a must to be unique, Just wanted to change username unique into false.
  • Please explain a little about your answer.
  • You are inheriting AbstractUser class but instead of this you should inherit AbstractBaseUser class, if you are using 2.0 >= greater version of django. And if you want to know more about this check it out codingforentrepreneurs.com/blog/…
  • @MehrdadPedramfar I don't know about his code so I just want give some info related to his code and I don't want to add something additional in it..... And he is inheriting AbstractUser class so, that username field will directly make an impact on the Django username field.... This is it