July, 2023 Update:
You can extend User model with OneToOneField() to add extra fields. *You can also see my answer explaining how to set up email and password authentication with AbstractUser or AbstractBaseUser and PermissionsMixin.
First, run the command below to create account app:
python manage.py startapp account
Then, set account app to INSTALLED_APPS in settings.py as shown below:
# "settings.py"
INSTALLED_APPS = [
    ...
    "account", # Here
]
Then, create UserProfile model in account/models.py as shown below. *user field extends User model with OneToOneField():
# "account/models.py"
from django.db import models
from django.utils.translation import gettext_lazy as _
from django.contrib.auth.models import User
class UserProfile(models.Model):
    user = models.OneToOneField(
        User, 
        verbose_name=_("user"), 
        on_delete=models.CASCADE
    )
    age = models.PositiveSmallIntegerField(_("age"))
    gender = models.CharField(_("gender"), max_length=20)
    married = models.BooleanField(_("married"))
Then, create UserProfileInline and UserAdmin classes in account/admin.py as shown below. *With admin.site.unregister(User), unregistering User model registered by default is necessary otherwise there is error:
# "account/admin.py"
from django.contrib import admin
from .models import UserProfile
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User
admin.site.unregister(User) # Necessary
class UserProfileInline(admin.TabularInline):
    model = UserProfile
@admin.register(User)
class UserAdmin(BaseUserAdmin):
    inlines = (UserProfileInline,)
Then, run the command below:
python manage.py makemigrations && python manage.py migrate
Then, run the command below:
python manage.py runserver 0.0.0.0:8000
Finally, you could extend User model with extra fields as shown below:
