2013-09-27 3 views
0

데이터가있는 데이터베이스가 있습니다. 이 데이터를 JSON 파일 (C:\Python25\python manage.py dumpdata > initial_data.json)에 넣습니다.기존 Django 데이터베이스에 NullableBooleanField를 추가하는 방법은 무엇입니까?

그럼 난 내 모델 중 하나에 추가 다음 필드를 추가 : 나는 C:\Python25\python manage.py syncdb를 실행하면

visible = models.NullBooleanField(null=True, blank=True, default=False) 

, 그것은 initial_data.json에서 데이터를 가져올 시도에 DatabaseError: Could not load opinions.Topic(pk=1): no such column: visible 오류 메시지가 생성했다.

데이터를 손실하지 않고 Nullable 부울 필드를 기존 데이터베이스에 추가하려면 어떻게해야합니까?

업데이트 1 : 분명히, 나는이 문제를 다루는 첫 번째 사람이 아닙니다. 어느 데이터베이스 마이그레이션 메커니즘이 더 우수합니까? Django Evolution, South 또는 다른 것이 있습니까?

+2

남쪽은 실제로 장고 코어에 추가되지 않습니다. 따라서 South를 수행하는 개발자가 Django에 대한 마이그레이션을 개발했지만 그는 처음부터 거의 수행했습니다. 그러나 Django 1.7이 릴리스 될 때 남에서 Django 마이그레이션으로 변환하는 방법에 대한 마이그레이션 노트가 있습니다. – miki725

+0

@ miki725 - 고마워, 고마워. 정확성을 위해 다시 작성 : South는 가장 널리 사용되는 타사 마이그레이션 도구이며 이것이 내가 사용하고자하는 도구입니다. 수동으로 테이블을 변경할 수도 있지만 유지 관리가 훨씬 쉽지 않습니다. –

+0

@PeterDeGlopper DjangoCon 2013 비디오가 출시되면 Andrew Godwin ("http://www.djangocon.us/schedule/presentation/16/")이 "Everybody Loves Migrations"토크를 볼 수 있습니다. 주제에 대한 자세한 내용을 설명합니다. – miki725

답변

2

당신이 여기서 물어 보는 것은 db 마이그레이션입니다. syncdb은 실제로 db를 동기화하지 않지만 테이블 만 생성하기 때문에 아마도 끔찍한 관리 명령 이름 일 것입니다.

현재 사실상 Django 마이그레이션 표준은 South입니다. 기본적으로 데이터를 잃지 않고 모델을 db와 동기화하는 마이 그 레이션이라고하는 이러한 작업을 수행 할 수 있습니다. 프로젝트에 남쪽을 추가하면 조명기를 다루지 않고 필드 나 테이블을 모두 추가/변경/이름 바꾸기/제거 할 수 있습니다. 당신이 남쪽을 처음 접한다면 정말 좋은 문서를 가지고 있으므로 자습서를 따르는 데 문제가 없어야합니다. 내가 볼 수있는 유일한주의 사항은 문제가 될 수있는 Windows를 사용하고 있다는 것입니다 (확실하지 않음).

현재 South와 Django 핵심 개발자의 Andrew Godwin이 South를 사용해야합니다. 실제로 그는 Django에 직접 db 마이그레이션을 도입하기 위해 노력하고 있습니다. 이 프로젝트는 거의 완료되었으며 Github의 Django 마스터 브랜치와 이미 병합되었습니다. 2014 년 초 Django 1.7이 출시 될 예정입니다. 따라서 Django 1.7부터 South를 사용하면 Django에서 직접 db 마이그레이션을 수행 할 수 있습니다.

관련 문제