Whenever I deploy an app, I always use cookiecutter-django. I’m pretty sure there is an option lying somewhere in the settings that let you disable username. If not, I believe the BaseUser model has the option of the unique identifier or username be set to the email itself.
Otherwise, you can do what you said, which is abstractbaseuser model. Or you can setup a manager class. Check the Django source code for a little more insight.