팀 프로젝트 It'em is

User모델을 만들면서 nickname을 나중에 추가하게 되었다.

이미 만들어진 User모델을 기반으로 회원가입, 로그인 테스트를 해서 user가 여럿 생성 된 상태에서 nickname 필드를 추가했다.

원래 의도

class User(AbstractBaseUser):
    ...
    nickname = models.CharField(max_length=16, unique=True, null = True, default = "닉네임을 입력하세요")

    ...

user는 닉네임을 입력해야 한다!!

중복된 닉네임을 제한하기 위해 unique값을 줬다.
이미 만들어진 user는 unique값인 닉네임이 비어있어서 오류가 뜨게 될 것 같아 null=True를 줬다.
default는 무슨 생각으로 넣었는지..

내 사고회로는 다음과 같았다.

  1. unique인 닉네임 필드 추가 이전에 이미 만들어진 user를 위해 null=True를 해주자.
  2. 이러면 오류가 나지 않을테니 admin으로 이미 만들어진 user들의 닉네임을 채워주고 null을 빼면 되겠다.
  3. default값을 넣어서 user편의를 봐주자

문제점

  1. null=True.. 여기까진 OK.
  2. default를 줌으로써 닉네임을 넣지 않으면 모두 같은 닉네임을 기본값으로 받게 될텐데 그럼 unique값과 상충된다.
  3. 말 그대로 상상코딩

해결코드

class User(AbstractBaseUser):
    ...
    nickname = models.CharField(max_length=16, unique=True)
    ...

문제를 제거함으로서 문제를 해결..!! (+DB초기화)

대신

class User(AbstractBaseUser):
    ...
    nickname = models.CharField(max_length=16, unique=True)
    ...
    REQUIRED_FIELDS = ['nickname',]
    ...

REQUIRED_FIELDS에 nickname 필드를 추가해서 닉네임을 필수로 입력하도록 했다.

profile
가보자고

0개의 댓글

관련 채용 정보