당신이 이 오류를 겪고 있는 이유는 다음과 같을 것이다.

  1. DB를 삭제하고 다시 만든 경우
  2. models.py를 확장한 경우

1번의 경우라면 간단하게 해결이 가능하다. migrate 할 때 아래와 같은 옵션을 덧붙혀서 데이터베이스를 생성하면 된다.

1
python manage.py migrate --run-syncdb

2번의 경우 필자는 이제껏 DB를 삭제하고 다시 생성하는 쉬운 방법을 택했으나 실제 서비스를 진행 중 확장이 필요한 경우 사용자의 데이터를 다 날려 버릴 순 없지 않은가? 정말 고생끝에 해결했다. 이 글을 찾은 당신에게도 도움이 되었으면 한다.

1
python manage.py dumpdata --natural-foreign --natural-primary -e contenttypes --indent=4 > dump.json

위 명령어로 기존의 db의 데이터를 json으로 변환시킨다. 단 이때는 models.py가 확장된 상태여선 안된다. json으로 변환 후 models.py를 확장하고 데이터 베이스를 삭제후 위 명령어로 데이터 베이스를 생성한 후 아래 명령어로 데이터를 로드한다.

1
python manage.py loaddata dump.json

다만 loaddata를 할때 새로 확장한 애트리뷰트에 blank=True 혹은 default가 선언되어 있어야 오류없이 들어간다.

WRITTEN BY

배진오

소비적인 일보단 생산적인 일을 추구하며, 좋아하는 일을 잘하고 싶어합니다 :D
im@baejino.com