Django에서 User 모델을 참조하는 방법

1. settings.AUTH_USER_MODEL

2. get_user_model()

 

 

1. settings.AUTH_USER_MODEL

반환값 : 'accounts.User'

settings.py에 AUTH_USER_MODEL='accounts.User' 으로 유저모델 대체 설정했다.

내장 유저 모델을 acounts의 User를 대체한 코드이다.

settings.AUTH_USER_MODEL의 반환값이 'accounts.User'문자열이 된 것이다.

models.py에서 사용한다.

 

 

 

from django.conf import settings

class Article(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

FK의 참조값으로 settings.AUTH_USER_MODEL을 이용했다.

유저 객체를 생성하기 전에 모델 객체가 먼저 생성되기 때문에 get_user_model()을 사용할 수 없다.

article에 user의 id를 참조한 것이다. 테이블에 user_id가 추가된다.

models.py가 변경되었기 때문에 migration을 진행한다.

 

 

class Comment(models.Model):
    article = models.ForeignKey(Article, on_delete=models.CASCADE)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

comment에는 FK가 article, user 2개이다.

 

 

 

 

2. get_user_model()

반환값 : User Object

User 클래스를 직접참고하지 않고 get_user_model()을 이용하면 프로젝트에서 활성화된 유저모델을 return하게 된다.

반환값은 User Object 객체이다.

models.py가 아닌 다른 모든 곳에서 유저 모델을 참조할 때 사용한다.

 

 

 

 

 

 

User 모델 참조할 때,

models.py 에서는 settings.AUTH_USER_MODEL

그 외에서는 get_user_model()