2013-09-23 2 views
0

응용 프로그램 내에서 일부 모델을 정의하고 "blog"라고합니다.Django (South) : 모델 응용 프로그램을 변경하십시오.

djangoproject 
    /blog 
     models.py 
지금, 모델의 위치를 ​​변경, 예를 들어 여기를 넣을

:

djangoproject 
    /blog 
     xxx 
    /all_models 
     models.py 

를보기의 코드 포인트에서이 꽤 사소한,하지만 난에 문제가있을 것 같아요 Django와 South가 생성 한 테이블이 모두 blog_postsblog_comments으로 명명 되었기 때문에 Django는이 명명 규칙에 의존하고 있으며 데이터베이스에 이미있는 데이터를 잃고 싶지 않습니다.

어떻게 하시겠습니까?

답변

4

가장 쉬운 방법은 테이블을 변경하는 것이 아니라 코드를 변경하는 것입니다. 각 모델의 Meta 클래스에 선언문 db_table = "blog_tablename"을 넣으면 Django에서 문제없이 찾을 수 있습니다.

1

두 가지 방법으로 해결할 수 있습니다. 첫 번째 쉬운 방법은 각 모델의 메타 클래스에 db_table을 제공하는 것입니다. 다른 하나는 변경 사항을 적용하기위한 마이그레이션을 만드는 것입니다.

지금까지 난 당신이 세 가지 방법 마이그레이션으로해야하므로, 테이블 이름 변경을 지원하지 않습니다 남쪽으로 알고 :

  • 이동 드 모델, 당신은 두 테이블이 이전 및 새가 지금 (마이그레이션을 만들)
  • 데이터 마이그레이션을 만들고 이전 테이블을 반복하여 나중에 개체를 복사하십시오.
  • 이전 모델을 제거하고 마이그레이션을 만듭니다.

당신은 두 번째 방법 in south docs

에 대해 조금 자세한 내용을보실 수 있습니다