인프런 커뮤니티 질문&답변

욕망의햄버거님의 프로필 이미지

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

관계를 표현하는 모델 필드 (OneToOneField)

[OneToOne Field Demo] get_user_model() 메서드를 활용해야 하는 이유?

해결된 질문

작성

·

122

0

안녕하세요 진석님! 좋은 강의 잘 보고 있는 한 학생입니다!

오늘 강의를 보다가 궁금한 점이 생겨서 질문을 남겨봅니다.

 

jupyter로 코드 실습 하시다가 언급하시는 부분(9분 57초) 에서

get_uer_model() 메서드를 활용하기를 권장하셨습니다.

 

혹시 이 부분에 대한 이유를 알 수 있을까요?

이전까지 Model 을 작성하실 때에는 settings.AUTH_USER_MODEL을 사용하라고 하셨는데 어째서 해당 부분을 import 하지 않고 get_user_model()을 써야 하는지 이해가 되지 않아서 질문 드렸습니다!

이미 settings.AUTH_USER_MODEL 을 settings.py에서 변수에 할당한 상태라고 가정한다면, settings.AUTH_USER_MODEL 을 바로 import 하는게 메모리를 더 효율적으로 사용할 수 있는 방법이 아닌건가 하는 의문점이 있는 상태에서 질문 드린 점 참고 부탁드리겠습니다. (__ __ )

 

요약하자면 이렇습니다.

Q1. 9:57에서 언급하신 권장방법은 어째서 settings.AUTH_USER_MODEL을 import 하지 않고 get_user_model() 을 사용해야 하는가?

Q2. settings.AUTH_USER_MODEL은 Model 이 아닌것인가?

Q3. settings.AUTH_USER_MODEL을 import 해서 user.profile한 경우와 get_user_model() 을 import 하여 user.profile을 한 경우의 차이점은 무엇인가?

 

장고 강의에 항상 애정을 쏟아주셔서 감사합니다.

 

답변 1

2

이진석님의 프로필 이미지
이진석
지식공유자

안녕하세요.

AUTH_USER_MODEL 값은 "accounts.User" 와 같은 문자열이구요. 모델 클래스가 아닙니다.
https://github.com/django/django/blob/main/django/conf/global_settings.py#L526

get_user_model() 함수는 AUTH_USER_MODEL 값을 참조하여 관련 모델 클래스를 반환합니다.
https://github.com/django/django/blob/main/django/contrib/auth/__init__.py#L188

AUTH_USER_MODEL 문자열 값은 모델 관계 필드에 한해서 유저 모델 관계 지정이 필요할 때에만 사용하구요.
그 외에 유저 모델 클래스가 필요해서 get_user_model() 메서드를 호출하여 사용합니다.

충분한 답변이 되었을 지 모르겠네요.

살펴보시고 댓글 남겨주세요.

화이팅입니다. :-)