If you want to create a custom user model, Django provides an django.contrib.auth.models.AbstractBaseUser
model that you can extend and use. Django documentation has a whole section dedicated to that, take a look.
If you’re entirely happy with Django’s User model and you just want to add some additional profile information, you can simply subclass django.contrib.auth.models.AbstractUser
and add your custom profile fields. This class provides the full implementation of the default User
as an abstract model.
You can go through the code at github to see what to extend.