1) 관리자 권한과 함게 완전한 기능을 갖춘 User 모델을 구현하는 기본 클래스인 AbstractUser를 상속받아 새로운 User 모델 작성
# accounts/models.py
from django.contrib.auth.models import AbstractUser
Class User(AbstractUser):
pass
2) 기존에 django가 사용하는 User 모델이었던 auth앱의 User모델을 accounts 앱의 User 모델을 사용하도록 변경
# settings.py
AUTH_USER_MODEL = 'accounts.User'
3) admin site에 Custom User 모델 등록
# accounts/admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User
admin.site.register(User, UserAdmin)
https://docs.djangoproject.com/en/3.2/topics/auth/customizing/#auth-custom-user
4) 모델 정의하기
get_user_model()
: 현재 프로젝트에서 활성화 된 user model을 return하는 함수# accounts/forms.py
from django.contrib.auth.forms import UserChangeForm, UseCreationForm
from django.contrib.auth import get_user_model
class CustomUserChangForm(UserChangeForm):
class Meta:
model = get_user_model()
fields = '__all__'
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
# 기존의 UserCreationForm을 상속 받음
model = get_user_model()
fields = UserCreationForm.Meta.fields + ('email',)
> https://github.com/django/django/blob/main/django/contrib/auth/forms.py