당신이 이 오류를 겪고 있는 이유는 다음과 같을 것이다.
DB
를 삭제하고 다시 만든 경우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
가 선언되어 있어야 오류없이 들어간다.