2013-12-23 2 views
5

현재 Django 프로젝트에서 마이그레이션을 사용하고 있지 않지만 곧 사용할 예정입니다. 나는 South가 사실상의 도구라는 것을 이해한다. 그리고 나는 그것을 사용할 것이지만, Django 프로젝트 사이트에서 개발 버전 (1.7로 릴리즈 될 것으로 추측된다)은 migrate으로 실행되는 코어 마이그레이션 툴을 가지고 있다는 것을 읽었다.Django의 핵심 마이그레이션 도구 대 장고 데이터 마이그레이션을위한 남쪽

마이 그 레이션 도구를 사용한 경험이 거의 없기 때문에 (초장자를위한 장고 CMS를 설치하고 하루 정도 놀았습니다.) 초보자에게 가장 좋은 도구입니까?

또한 마이 그 레이션 자체가 꽤 젊고 Django의 버전이 훨씬 더 그렇기 때문에이 시점에서 남쪽으로가는 것이 나을 것입니까?

마지막으로 또 다른 질문은 South (대부분의 장고 프로젝트가 v1.5)에서 시작하면 1.6에서 1.7로 업그레이드 할 때 장고의 핵심 마이그레이션으로 변환하는 데 문제가 있습니까?

+0

관련 질문 : 사우스 앱에서 장고 1.7 마이그레이션으로의 업그레이드 경로를 제공하는 방법 http://stackoverflow.com/questions/22597240/upgrade-path-for-re-usable-apps-with-south-and-django -1-7- 마이그레이션 – stefanfoulis

답변

3

쉽게 사우스 마이 그 레이션 내역을 삭제하고 다른 종류의 마이 그 레이션 도구를 초기화 할 수 있습니다.

장고 코어 마이그레이션은 한국을 기반으로하기 때문에 으로 추측되어 Django 코어 마이그레이션으로 마이그레이션 할 수 있습니다.

Django 코어 마이그레이션은 아직 발표되지 않았으므로 배우려는 것이 목적이므로 South부터 시작하는 것이 좋습니다.

+0

내가 남쪽에 설치하고 내 애플 리케이션을 변환하고 잘 작동했습니다. 장고를 업그레이드 할 준비가되지 않았기 때문에이 계획은 좋은 생각처럼 보입니다. 감사. – nicorellius

4

이 변경 사항에 대한 Andrew Godwin (작성자 또는 Django Core 마이그레이션) 단어는 다음과 같습니다. "심각한 제한을 두드리는 한국의 4 세 디자인, 장고 자체에 마이그레이션 지원을 추가 할 때입니다." Django 핵심 마이그레이션으로 남한 마이그레이션 이력을 내보내는 기능.

그렇다면 가능한 한 1 월 20 일을 기다리는 것이 좋습니다. here과 같이 Core Migration이 포함 된 Django 1.7 알파 버전이 출시됩니다.

결국, Andrew Godwin worked on South himself이므로 Django Core Migration을 완전히 새로운 도구로 보지 말고 South v2로보아야합니다.

그러면 코어 마이그레이션이 출시되는 즉시 South가 실제로 유지되지 않을 것입니다. 나는 몇 시간을 기다리는이 새로운 도구 :

+0

좋은 포인트 +1 ... – nicorellius

3

남쪽에서 장고 1.7에 나와있는 업그레이드에 대한 문서에 기회를주는 것이 좋습니다 이유

:

If you already have pre-existing migrations created with South 0.x, then the upgrade process to use django.db.migrations is quite simple:

  • Ensure all installs are fully up-to-date with their migrations
  • Delete all your (numbered) migration files, but not the directory or init.py - make sure you remove the .pyc files too.
  • Run python manage.py makemigrations. Django should see the empty migration directories and make new initial migrations in the new format.
  • Run python manage.py migrate. Django will see that the tables for the initial migrations already exist and mark them as applied without running them.

That’s it! The only complication is if you have a circular dependency loop of foreign keys; in this case, makemigrations might make more than one initial migration, and you’ll need to mark them all as applied using:

python manage.py migrate --fake yourappnamehere 

(here에서).

+0

> Django는 초기 마이그레이션을위한 테이블이 이미 존재하는지 확인하고이를 실행하지 않고 적용된 것으로 표시합니다. 분명히 항상 그렇지는 않습니다. "django.db.utils.OperationalError : table"[table] "오류가 발생합니다." 마이그레이션 응용 프로그램 0001 --fake를 실행하면 문제가 해결됩니다. – wes

관련 문제