7👍
✅
Looks like the only way to get rid of the username
field is to override the AbstractUser
‘s username field and/or use a completely custom model from the ground up. Thought overriding AbstractBaseUser
should work too, albeit AbstractBaseUser
provides less functionality.
class CustomUser(AbstractUser):
# Custom user model for django-allauth
# Remove unnecessary fields
username = None
first_name = None
last_name = None
# Set the email field to unique
email = models.EmailField(_('email address'), unique=True)
# Get rid of all references to the username field
EMAIL_FIELD = 'email'
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
This model will remove the username
field and make the email
field unique, as well as change all references to the USERNAME_FIELD
to 'email'
. Do note that REQUIRED_FIELDS
should be empty as the USERNAME_FIELD
cannot be in there. When using allauth, this is not a problem, the email and password requirement are managed by allauth anyway.
The settings that I’ve mentioned in the question should remain the same, specifically-
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_EMAIL_REQUIRED = True
Source:stackexchange.com