I am trying to use the email field in the default Django user model as the username. I am using Django 1.5 and I saw that the default user has a USERNAME_FIELD
property.
In my project, I would like to set the following USERNAME_FIELD = 'email'
as a default in the user model.
This small but fundamental tweak is the only thing I would like to change in the user model. I was wondering if there is a way of changing the USERNAME_FIELD
without having to subclass the AbstractUser
. I saw in this question that you can subclass the AbstractUser
and write a custom manager for it.
So I was wondering if there is a simpler way of changing that property?
And if not, what would be the minimal way of extending the AbstractUser
to use the email field as username?
#Your app's __init__.py
from django.contrib.auth.models import User
User.USERNAME_FIELD = 'email'
You have to write a new Custom User Class by extending the AbstractBaseUser and not AbstractUser
Declare your email as the USERNAME_FIELD there
Optionally you can also declare a custom user manager that extends from BaseUserManager to handle the username required constraint. You can remove username from that manager's create_user function
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With