본문 바로가기

BackEnd/Django

Django AbstractUser를 이용한 Custom User Field 확장 방법

반응형

AbstractUser를 이용한 Custom User Field 확장 방법
(How to expand UserField Using "AbstractUser" in Django)
* 다른 여러 블로그 등을 찾아보았지만 장고를 이제 막 시작한 나한테는 설명을 이해하기가 쉽지 않았다.
* 아래 내용은 장고의 User 모델을 사용하면서 User 모델 Field 확장을 쉽게 하는 법을 설명한다.
* 해당 내용은 장고의 공식 문서를 참고해서 작성하였다.

# 비전공자가 이해한 Django

 

 

1. 새로운 app 생성 User의 Field를 관리할 앱을 생성한다.

python manage.py startapp account

 

 

2. models.py 작성

- User 모델에 추가할 내용을 작성한다.

# account/models.py

from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):

  A = models.CharField(max_length=10)
  B = models.CharField(max_length=5)

 

 

3. admin.py 작성

- 관리자 페이지에서 확인할 내용들을 작성한다.

# account/admin.py

from django.contrib import admin
from .models import User

@admin.register(User)
class UserAdmin(admin.ModelAdmin):

  # username 은 장고에서 제공하는 User 모델에 있는 컬럼명
  # 관리자 페이지에서 리스트를 보여줄 때 열로 활용
  list_display = ('username', 'email', 'A', 'B')
  list_filter = ('username',)

 

 

 

4. forms.py 작성

- settings.py 파일이 있는 폴더에 forms.py 파일을 만들어 아래의 내용을 작성한다.

# myapp/forms.py

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

# UserCreationForm 을 상속받아 user 를 생성할 때 사용하는 모델을 바꿔준다.
class CustomUserCreationForm(UserCreationForm):

    class Meta(UserCreationForm):

        model = get_user_model()
        fields = UserCreationForm.Meta.fields

 

 

 

5. views.py 작성

- settings.py 파일이 있는 폴더에 views.py 파일을 만들어 아래의 내용을 작성한다.

# myapp/views.py

from .forms import CustomUserCreationForm

class UserCreateView(CreateView):
  form_class = CustomUserCreationForm

 

 

6. settings.py 작성

- settings.py 파일에 몇 가지 옵션을 추가한다.

# myapp/settings.py

INSTALLED_APPS = [
    # 생략
    
    'account.apps.AcountConfig' # 추가
    ]
    
AUTH_USER_MODEL='account.User'

 

 

본문 내용 중 오류가 있거나 실행이 잘 안되시는 분들은 밑에 댓글을 남겨주세요.
가능한 빠른 시일 내에 수정 및 답변 드리도록 하겠습니다.

 

반응형