[python] django syncdb 및 업데이트 된 모델

최근에 내 모델을 업데이트하고 BooleanField를 추가했지만 그렇게 할 때 python manage.py syncdb모델의 데이터베이스에 새 필드를 추가하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?



답변

Django 1.7 이상

Django는 마이그레이션 지원 기능을 내장 하고 있습니다 . 문서를 살펴보세요 .

Django 1.6 이하

Django는 기본적으로 마이그레이션을 지원하지 않습니다. 그래도 정확하게 작동하는 Django 용 플러그 형 앱이 있으며 훌륭하게 작동합니다. 그것은 남쪽 이라고 불립니다 .


답변

Django는 현재이 작업을 자동으로 수행하지 않습니다. 옵션은 다음과 같습니다.

  1. 데이터베이스에서 테이블을 삭제 한 다음 syncdb를 사용하여 새 형식으로 다시 만듭니다.
  2. 를 사용하여 데이터베이스에 대한 SQL을 인쇄하고 python manage.py sql (appname)필드에 추가 된 줄을 찾은 다음 alter tableSQL 명령을 사용하여 수동으로 추가합니다 . (이렇게하면 현재 레코드에 대한 필드 값을 선택할 수도 있습니다.)
  3. South를 사용하십시오 ( Dominic의 대답에 따라 ).


답변

이 단계를 따르세요:

  1. dumpdata 관리 명령을 사용하여 데이터를 조명기로 내보내기
  2. 테이블 버리기
  3. syncdb 실행
  4. loaddata 관리 명령을 사용하여 조명기에서 데이터를 다시로드합니다.


답변

최고의 답변에서 제안했듯이 South를 사용해 보았고 모호한 마이그레이션 오류 로 한 시간 동안 좌절 한 후 대신 Django Evolution을 사용 하기로 결정했습니다 .

South보다 시작하는 것이 더 쉽다고 생각하고 처음 타자했을 때 완벽하게 작동 ./manage.py evolve --hint --execute했기 때문에 만족합니다.


답변

Havent는 한동안 django를 사용했지만 syncdb가 db 테이블에서 alter 명령을 수행한다는 것을 기억하는 것 같습니다. 테이블을 삭제 한 다음 다시 실행하면 다시 생성됩니다.

편집 : 죄송합니다 변경을 수행하지 않습니다.


답변

장고 1.6에서

  • 처음에 우리는 실행했습니다- python manage.py sql <app name>

  • 그런 다음 실행해야합니다. python manage.py syncdb


답변

Apache 및 MySQL과 함께 Django를 실행하는 경우 makemigrations로 마이그레이션 한 후 apache를 다시 시작 하십시오 .