Dealing with AbstractBaseUser is much harder than dealing with AbstractUser, and it is not recommended unless you are an expert, in this article we will deal with AbstractUser wich is a subclass of AbstractBaseUser.
To create custom user, these are the main steps:
Written code for those steps can be found here, we can now create super user to check the result, Django-x also can be used, it comes with a built in custom user model.
Watch: