티스토리 뷰

서론

Django 프레임워크를 통해 웹 개발을 하다보면 유저관리를 위한 기능을 사용할 때가 있습니다. 이때 AUTH_USER_MODELget_user_model()의 차이를 찾아보았습니다.

본론

AUTH_USER_MODEL

AUTH_USER_MODEL은 프로젝트에서 사용하고 있는 유저 모델의 경로 문자열입니다.
그래서 코딩 컨벤션에 따라 대문자로 표기하는 것으로 보입니다.
django.conf.settings에서 사용하려는 유저 모델의 경로 문자열로 대체 가능합니다.

사용자화

프로젝트의 settings.py 에 AUTH_USER_MODEL = '나만의 유저 모델'을 추가합니다.

# settings.py
...
AUTH_USER_MODEL = 'accounts.MyUser' # 나만의 User 모델인 MyUser모델로 AUTH_USER_MODEL을 설정

사용방법

뷰 혹은 다른 모델에서 유저 모델을 지정할 때 사용합니다.

# settings를 꼭 import 해주어야 합니다.
from django.conf import settings 

class Profile(models.Model):
    user = models.OneToOneField(to=settings.AUTH_USER_MODEL, ...)

주의사항

아래 그림은 Django 공식문서에서 제공되는 AUTH_USER_MODEL에 대한 설명입니다. 프로젝트 시작 후에 해당 값을 변경하지 말라고 하네요.

get_user_model()

get_user_model()AUTH_USER_MODEL모델 참조(reference) 입니다.
따라서 AUTH_USER_MODEL의 값이 바뀌면 get_user_model()로 반환되는 모델도 달라집니다.
django.contrib.auth에서 import할 수 있습니다.

사용방법

.objects와 같은 모델 클래스 메서드에 접근하기 위해 사용합니다.
메서드 접근은 AUTH_USER_MODEL또한 가능하긴 하나, get_user_model()을 사용할 경우 IDE에서 자동완성을 지원하기 때문에 편의성이 높아집니다.

from django.conf.auth import get_user_model

queryset = get_user_model().objects.filter(is_superuser=False)

자동완성 유무의 차이

결론

두 개는 표현만 다를 뿐 기능은 같으므로 유저 모델에 접근해야 하는 상황에서 메서드가 필요하지 않다면 AUTH_USER_MODEL을 사용하고 필요하다면 get_user_model()을 사용하는 것이 좋을 것 같습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함