2012-12-07 3 views
3

시나리오 : Django 애플리케이션에 절대 한 번도 남한 관리를받지 않은 앱이 있습니다. 나는 오래 전 syncdb를 돌 렸고,이 앱의 모델은 결코 바꿀 필요가 없었다. 시간이 지남에 따라 필자는 분명히 이러한 테이블에 데이터를 추가했습니다.Django South - 이미 테이블이 채워진 앱의 초기 마이그레이션을 만듭니다.

이제이 앱을 남쪽 관리하에두고 싶지만 일단 테이블이 이미 존재하면 마이그레이션 파일을 만들 수 있지만 당연히 실행할 수 없습니다. 나는 기존의 테이블에 대한 데이터베이스 오류를 얻을 : 이것은 나를 위해 꽤 분명하다

django.db.utils.DatabaseError: (1050, "Table 'ooyala_ooyalaitem' already exists")

. 현재 테이블을 사용하기 위해 마이그레이션 명령을 실행하는 현명한 방법이 있다면 궁금합니다. 나는 데이터를 덤프하고, 테이블을 수동으로 삭제하고, 마이그레이션을 실행하고, 다시 채우고 싶지 않았고, 이것에 대한 데이터 마이그레이션을 만들고 싶지도 않았다.

이것에 대한 아이디어가 있습니까? 심지어 가능할까요?

감사합니다.

+0

"괴롭히는 설명서"는이 문제에 대해 잘 설명되어 있지 않다고 생각합니다. 포르투갈어에 대한 설명은 http://django-na-pratica.blogspot.com.br/2011/11/iniciando--south-em-uma-base-ja.html에서 얻을 수 있습니다. – Josir

답변

12

This is covered in the manual. 남쪽을 사용할 수있는 응용 프로그램을 변환

매우 간단합니다 :

  • 을 편집 settings.py와 (당신이 올바른 위치에 설치 한 가정) INSTALLED_APPS에 '남쪽'을 넣어
  • 실행 ./manage.py syncdb을 사용하여 South 테이블을 데이터베이스로로드하십시오. syncdb는 이제 다르게 보입니다 - South는 그것을 수정합니다.
  • 실행 ./manage.py convert_to_south myapp - South가 자동으로 첫 번째 마이그레이션을 수행하고 가장합니다.

변경하기 전에 변환해야합니다. South는 마지막 마이그레이션의 고정 된 상태와 비교하여 변경 사항을 감지하므로 South를 사용하여 변환하기 전의 변경 사항을 감지 할 수 없습니다.

관련 문제