오늘은 django 타임어택 구현 테스트를 진행했다.
django project를 만들고, user app을 만든 다음 model을 AbstractUser로 부터 상속받아 휴대폰 번호 필드와 주소 필드를 추가해 모델을 커스텀 하여 migrate을 하던 중 에러가 발생했다.
user.models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
from phone_field import PhoneField
# Create your models here.
class User(AbstractUser):
phone = PhoneField(blank=True, help_text='Contact phone number')
address = models.URLField(max_length=250)
에러 메세지를 확인해보는데 어떤 파일, 어디에서 발생한 에러인지 잘 모르겠어서 구글링을 해봐도 내가 찾는 에러가 나오지 않아 user app의 모델명이 User라서 그런가 싶어 모델명을 바꿔보기도 하고, phone 필드를 pip install해서 처음 사용해보는 거라 주석 처리하고 해보기도 했지만 여전히 에러는 해결되지 않았다.
에러 메세지를 유심히보니 auth.user가 많이 보였고 사용자 인증과 관련된 에러겠구나 싶어 E304 에러코드와 함께 다시 auth.User.user_permissions 키워드로 검색하다 보니 model을 커스텀하고 settings.py에서 인증에 사용될 커스텀한 User 모델을 지정해주지 않았던 것이었다.
settings.py에서 AUTH_USER_MODEL = 'user.User'를 입력하여 사용자 인증 모델을 내가 커스텀한 모델로 설정한 후 migrate를 해보니 정상적으로 되어 해결할 수 있었다.
사용자 인증 모델을 커스텀한 후 settings.py에서 설정해주어야 한다는 것을 알고 있었지만 타임어택 구현을 하던 터라 너무 급급하게 코드를 입력했던 것 같다. 덕분에 한 번더 사용자 인증 에러 관련하여 리마인드 할 수 있었던 것 같다.