반응형
❤️🔥TIL : Today I Learned❤️🔥
그날그날 내가 공부한 것을 정리하는 것
내일배움캠프 AI트랙 40day
오늘 배운 내용 - DRF 타임어택
오늘 타임어택에서 제일 고민이 많았던 부분은 Django에서 기본으로 제공하는 User모델을 그대로 가져와야하는 부분이다.
매번 User앱과 모델을 별도로 만들고 확장하는 방법을 사용했지 그대로 User모델을 사용하는 방법을 몰라서 순간 당황을 했었다.
auth의 User을 가져오려고 하다가 구글링을 통해서 settings에서 지정한 auth User를 가져올수 있는 방법이 있다는 것을 찾았다.
settings에서 지정한 AUTH_USER_MODEL을 사용할 경우 추후 User 모델을 확장할경우에도 무리 없이 사용할수 있다고 생각을 해서 사용했다.
from django.conf import settings
from django.db import models
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL)
타임어택 제출에 튜터님의 해설을 듣는데 튜터님이 설명해주신 방법은 아래 와 같이 직접 User 모델 import 하는 방법과 get_user_model을 사용하는 방법 뿐이였다.
1. 직접 User 모델 import (비추)
- global settings 오버라이딩을 통해서 인증 User 모델을 다른 모델로 변경할 수 있음
from django.contrib.auth.models import User
class Post(models.Model):
author = models.ForeignKey(User)
2. get_user_model helper 함수를 통해 모델 클래스 참고 (추천)
from django.contrib.auth import get_user_model
class Post(models.Model):
author = models.ForeignKey(get_user_model())
내가 사용한 settings에서 지정한AUTH_USER_MODEL방법도 정상적으로 User모델을 불러오는 것 같았는데 바람직하지 못하게 작성한 것인줄 알았는데 튜터님께 찾아보고 get_user_model()를 자세히 보니 get_user_model()은 결국 settings.AUTH_USR_MODEL을 사용한 것이였던 것이다! 다반 예외 처리가 추가된것이 차이점이랄까... 당황했지만 오히려 더 재밌는 것을 찾은 것 같다.
def get_user_model():
"""
Return the User model that is active in this project.
"""
try:
return django_apps.get_model(settings.AUTH_USER_MODEL, require_ready=False)
except ValueError:
raise ImproperlyConfigured(
"AUTH_USER_MODEL must be of the form 'app_label.model_name'"
)
except LookupError:
raise ImproperlyConfigured(
"AUTH_USER_MODEL refers to model '%s' that has not been installed"
% settings.AUTH_USER_MODEL
)
반응형
'I learned' 카테고리의 다른 글
내일배움캠프 AI - TIL 41 (0) | 2022.10.31 |
---|---|
내일배움캠프 AI트랙 9 Week (0) | 2022.10.30 |
내일배움캠프 AI - TIL 36 (0) | 2022.10.24 |
내일배움캠프 AI트랙 8 Week (0) | 2022.10.23 |
내일배움캠프 AI - TIL 35 (0) | 2022.10.21 |