2011-11-21 5 views
1

django에 새로운 기능이 있습니다. 데이터베이스의 데이터를 지우지 않고 테이블에 열을 추가하고 싶습니다. 방금 새로운 모델을 추가하려면 명령데이터를 지우지 않고 테이블 구조를 변경하십시오.

python manage.py reset polls 

당신이 그것에 대해 manage.py syncdb을 사용할 수, 전체 데이터베이스

답변

6

에서 데이터를 삭제합니다. 불행히도, 모델을 변경했다면, 기본 장고 명령으로는 할 수 없습니다.

기존 데이터로 모델을 변경하려면 Django와 데이터베이스에 이전 테이블의 데이터를 새 테이블로 마이그레이션하는 방법을 알려줘야합니다. 이 작업을 수행 할 수있는 도구는 South입니다. 거기에 좋은 시작 튜토리얼은 여기에서 찾을 수 있습니다 : 새 열이

변경 모델 :

http://south.aeracode.org/docs/tutorial/index.html

3

이 같은 변화의이 종류를 확인하십시오.

class Book(models.Model): 
    title = models.CharField(maxlength=100) 
    authors = models.ManyToManyField(Author) 
    publisher = models.ForeignKey(Publisher) 
    newColumn = models.DateField() 

새로운 만들 테이블 명령을보기 : 파이썬 manage.py sqlall

blah blah 
CREATE TABLE "books_book" (
    "id" serial NOT NULL PRIMARY KEY, 
    "title" varchar(100) NOT NULL, 
    "publisher_id" integer NOT NULL REFERENCES "books_publisher" ("id"), 
    "newColumn" date NOT NULL 
); 

나는 데이터베이스에 손으로 테이블을 변경

mysql -u xxx -p dbxxx 
alter table ttttt add column "newColumn" date NULL; (*1) 

(* 1) 해야하는 널에 의해 또는 기본값을 알려야합니다.

기억하십시오. 색인 및 기타 제약 조건이 필요한 경우

모두입니다. 당신이 큰 프로젝트가있는 경우 또한

0

는 그래서 귀하의 경우

python manage.py sql <app_name> 

를 사용할 수있는 답을 danihp합니다 : 당신은 "설문 조사"SQL 절을 얻을

python manage.py sql polls 

그런 식으로.

관련 문제