Вы можете сделать это, расширив AbstractUser
от django.
# models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
from django.utils.translation import gettext_lazy as _
class User(AbstractUser):
EMAIL_FIELD = 'email'
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']
email = models.EmailField(
_('email address'),
unique=True,
blank=True
)
cellphone = models.CharField(
_('cell phone'),
max_length=20,
null=True, blank=True
)
Затем вам также необходимо указать эту пользовательскую модель в ваших настройках. Укажите путь к пользовательской модели, которую вы только что создали. <app_name>.<ModelClassName>
# settings.py
AUTH_USER_MODEL = 'users.User'
Наконец, ваш администратор также должен унаследовать от Django default UserAdmin
, если вы хотите сэкономить свое время на всех хлопотах по созданию некоторых методов, которые они уже создали. Теперь вы можете редактировать администратор пользователя так, как вам нужно, также используя все существующие функции администратора.
# admin.py
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin as OrigUserAdmin
User = get_user_model()
@admin.register(User)
class UserAdmin(OrigUserAdmin):
list_display = (
'id', 'first_name', 'last_name', 'username', 'email', 'is_active'
)