• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

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

24.02.03 15:30 작성 조회수 77

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() 메서드를 호출하여 사용합니다.

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

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

화이팅입니다. :-)