[Django] Custom User Model

완수·2021년 11월 16일
0

[Django]

목록 보기
7/8
post-thumbnail

User Model 대체

커스텀 유저 모델을 설정하는 것을 강력하게 권장 (반드시 첫 migrate 실행 전 설정)

  • 일부 프로젝트에서는 Django의 내장 User 모델(기본값: auth.User)이 제공하는 인증 요구사항이 적절하지 않을 수 있음
  • Django는 User를 참조하는데 사용하는 AUTH_USER_MODEL값을 제공(settings.py 내에 존재)하여 default user model을 재정의(override)할 수 있도록 함

Custom User Model 정의하기

# appName/models.py

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    pass
# settings.py

...
AUTH_USER_MODEL = 'appName.User'
# appName/admin.py

...
from django.contrib.auth.admin import UserAdmin
from .models import User

admin.site.register(User, UserAdmin)
  • migrate하고 나면 DB에 appName_user의 column이 생성된다.

UserCreationForm, UserChangeForm

회원가입 시, 회원 정보 수정 시 사용하는 ModelForm

  • 기종 내장 User 모델을 사용하기 때문에 커스텀 User Model로 대체해야 함
  • 참조하는 User 모델은 get_user_model()을 통해 참조
    - get_user_model(): 현재 프로젝트의 활성화된 User 모델을 return하는 함수
    (User 모델을 커스터마이징 한 상황에서는 Custom User모델을 반환)
# forms.py

from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from django.contrib.auth import get_user_model

class CustomUserCreationForm(UserCreationForm):
    
    class Meta(UserCreationForm.Meta):
        model = get_user_model()
        fields = UserCreationForm.Meta.fields + ('custom_field')
        
class CustomUserChangeForm(UserChangeForm):
    
    class Meta:
        model = get_user_model()
        fields = '__all__'
profile
병아리 개발자의 공부 노트 🐣

0개의 댓글