Tonic 's lesson learned


Django User 사용자 모델을 확장하는 4가지 방법

Django에서 기본으로 제공해주는 User 모델 이외에 추가 정보를 함께 저장해야 할 경우가 있다. 흔히 프로필을 만든다고 하는데 아래 4가지 방법은 이때 사용하는 방법이다.


1. 프록시(Proxy) 모델 사용하기

현재 데이터베이스 스키마에 영향을 주지 않으면서 기본 정렬 순서, 새로운 메서드 추가 등의 기본 동작을 바꾸며, 새로운 테이블을 만들어 정보를 저장하는게 아니라 기본 사용자 모델의 상속받아 확장하고 싶을 때 이 방법을 쓴다.

2. Profile을 활용한 One-To-One 관계 활용하기

기본 장고 사용자 모델 외에 추가로 저장할 데이터가 있고 인증 절차는 건드리지 않아도 된다면 이 방법을 사용하면 된다. 새로운 테이블을 만들어 One-To-One 관계를 설정하는 것으로 추가 정보를 저장하고 연결한다. 장고에서 사용자 프로필을 만든다고 하면 대부분 이 방법을 말한다.

3. AbstractBaseUser를 확장하여 User 모델 커스터마이징하기

AbstractBaseUser 모델을 상속받아 완전히 새로운 사용자 모델을 만드는 것으로 프로젝트 초기에 진행해야 하며 장고 데이터베이스에 미치는 영향이 크므로 주의깊게 적용해야 한다. 장고에서 사용하는 인증 절차 알고리즘을 바꾼다든지 할 때 사용한다.

4. AbstractUser를 확장하여 User 모델 커스터마이징하기

AbstractUser 모델을 상속받아 완전히 새로운 사용자 모델을 만드는 것으로 프로젝트 초기에 진행해야 하며 장고 데이터베이스에 미치는 영향이 크므로 주의깊게 적용해야 한다. 장고 인증 절차를 그대로 쓰면서 별도의 클래스같은 거 안만들고 장고 기본 사용자 모델에 추가 정보를 저장하고 싶을 때 사용한다.

각자 상황에 따라 맞는 선택을 하면 되지만 보통 장고에서 추가 저장을 위해서 프로필을 만든다고 하면 2번 방법을 쓰면 된다.

이 4가지 방법에 대한 자세한 설명은 여기에 방문하면 된다.