2014-01-07 4 views
0

Django 모델에서 필드를 삭제하는 간단한 방법이 있습니까? 필드의 추가를 위해, 작품 완벽한하지만 당신은 South을 사용할 수는 다음과 같은 오류를Django 모델 : 드롭 필드

django.db.utils.DatabaseError: (1060, "Duplicate column name 'xyz_json_old'")

답변

0

나는 남쪽을 사용하고 있지만 여전히 나는 내 친구의 도움으로 다음을 통과했다 - 내가 뭔가를 망친해야합니다과 남쪽의 일부 내부 단계는 원자 수없는 그는 말한다

  1. 편집 models.py 파일과 클래스에서 열을 삭제
  2. BASH 프롬프트 $ 파이썬 manage.py의 schemamigration 코어
  3. MYSQL 프롬프트 --auto> 테이블 core_tablename 드롭 열 xyz_json_old을 변경하는 행위 범하다;
  4. BASH 프롬프트 $ 파이썬 manage.py 코어
0

을 던지는 삭제 작동하지를 마이그레이션 할 수 있습니다.

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

는 그런 다음 models.py을 편집 한 다음

./manage.py schemamigration --auto myapp 

그들 마이그레이션 :

./manage.py migrate myapp 
+0

나는 그가 이미 남쪽을 사용하고 의심, 나는 그가 마이그레이션하려고 생각하고 그 오류를 때리고 곳이다. 그는 – ptr

2

을이

$ python manage.py dbshell 

을 시도 모델에서만 분야를 삭제하려면 데이터베이스 셸 내에서 직접 얻을 수 있습니다 (mys ql 또는 psql)을 사용중인 데이터베이스 까지.

$ mysql> | psql> ALTER TABLE <table_name> DROP column <COLUMN_NAME>; 

모델을 엽니 다 너무 (파이썬 파일)과 같은 경우 문제가되지 않습니다, 모델에서 필드 이름을 벗고 이제

$ python manage.py syncdb 

을 입력 그리고 테이블에 열을 삭제합니다 테이블이 이미 채워 졌는지 여부.

+0

감사를 마이 그 레이션해야 할 수도 있습니다. 내 단계를 작성한 후 귀하의 의견을 보았습니다. – comiventor