django 1.8 공식 문서 번역:2-4-3 모드 편집기

4300 단어 django
모드 편집기class BaseDatabaseSchemaEditor[source]
Django의 마이그레이션 시스템은 두 부분으로 나뉘어 있습니다.어떤 작업을 수행해야 하는지를 계산하고 저장하는 논리(django.db.migrations와'모델 만들기'또는'필드 삭제'를 SQL 문장으로 바꾸는 데이터베이스 추상층인 후자는 모델 편집기의 기능이다.
일반적인 개발자가 Django를 사용하는 것처럼 모델 편집기와 직접 상호작용을 하는 것은 상상할 수 없지만, 자신의 이전 시스템을 작성하거나, SQL 문장을 작성하는 것보다 더 많은 수요가 있을 것이다.
모든 Django의 데이터베이스 백엔드는 자신만의 모드 편집기를 제공하고 항상 connection.schema_editor() 상하문 관리자를 통해 접근할 수 있다.
with connection.schema_editor() as schema_editor:
    schema_editor.delete_model(MyModel)

이것은 상하문 관리자를 통해 사용해야 한다. 왜냐하면 업무와 SQL 지연 (예: 창설 ForeignKey 제약) 과 유사한 것들을 관리할 수 있기 때문이다.
그것은 모든 가능한 조작을 방법으로 폭로할 것이며, 이러한 방법은 수정된 순서에 따라 호출해야 한다.일부 작업이나 유형은 모든 데이터베이스에 사용할 수 없습니다. 예를 들어 MyISAM 엔진은 외부 키 제약을 지원하지 않습니다.
만약에 Django를 위해 삼자 데이터베이스 백엔드를 작성하고 있다면 SchemaEditor 1.7의 이전 기능을 사용해야 한다. 그러나 데이터베이스가 SQL의 사용과 관계 디자인에 있어서 표준을 따르기만 한다면 Django에서 만든 SchemaEditor 중 하나를 파생시키고 문법을 간단하게 조정할 수 있어야 한다.또한 일부 새로운 데이터베이스 특성은 이전에 필요한 것이다. can_rollback_ddlsupports_combined_alters 모두 매우 중요하다.
메서드
execute BaseDatabaseSchemaEditor.execute(sql, params=[])[source]
매개변수가 제공되면 전달된 SQL 문을 실행합니다.이것은 일반 데이터베이스 커서에 대한 간단한 봉인입니다. 사용자가 원한다면 .sql 파일에서 SQL을 얻을 수 있습니다.
create_model BaseDatabaseSchemaEditor.create_model(model)[source]
제공된 모델을 위해 데이터베이스에 새 테이블을 만들고 필요한 유일한 제약이나 색인을 가지고 있습니다.
delete_model BaseDatabaseSchemaEditor.delete_model(model)[source]
데이터베이스에 있는 모델의 테이블과 유일한 제약이나 인덱스를 삭제합니다.
alter_unique_together BaseDatabaseSchemaEditor.alter_unique_together(model, old_unique_together, new_unique_together)[source]
모델의 unique_together값 수정하기;이렇게 하면 모델 테이블에 고유 구속조건이 새 값과 일치하도록 추가되거나 삭제됩니다.
alter_index_together BaseDatabaseSchemaEditor.alter_index_together(model, old_index_together, new_index_together)[source]
모델의 index_together값 수정하기;이것은 새 값과 일치하도록 모델 테이블에 색인을 추가하거나 삭제합니다.
alter_db_table BaseDatabaseSchemaEditor.alter_db_table(model, old_db_table, new_db_table)[source]
모델의 테이블을 old_db_table에서 new_db_table로 변경합니다.
alter_db_tablespace BaseDatabaseSchemaEditor.alter_db_tablespace(model, old_db_tablespace, new_db_tablespace)[source]
모형의 시계를 한 시계 공간에서 다른 시계로 이동시키다.
add_field BaseDatabaseSchemaEditor.add_field(model, field)[source]
모델의 테이블에 추가 필드를 표시하는 열(또는 몇 열)을 추가합니다.이 필드에 db_index=True 또는 unique=True가 있으면 색인이나 유일한 제약이 추가됩니다.
필드가 ManyToManyField 이고 값이 없으면 열을 만드는 대신 테이블을 만듭니다.through값을 제공했다면 아무것도 하지 않았을 것이다.
필드가 through인 경우 열에 외부 키 제약조건이 추가됩니다.
remove_field ForeignKey
모델의 테이블에서 필드를 대표하는 열과 열의 유일한 제약, 키 제약, 색인을 제거합니다.
필드가 BaseDatabaseSchemaEditor.remove_field(model, field)[source]이고 ManyToManyField 값이 없으면 추적 관계를 만드는 테이블을 삭제합니다.through값을 제공했다면 아무것도 하지 않았을 것이다.
alter_field through
이렇게 하면 모델의 필드가 이전 필드에서 새 필드로 변환됩니다.이것은 열 이름의 수정BaseDatabaseSchemaEditor.alter_field(model, old_field, new_field, strict=False)[source] 속성), 필드 유형의 수정(필드 클래스가 수정된 경우), 필드db_column 상태의 수정, 필드 차원의 유일성 제약과 인덱스 추가 또는 삭제, 메인 키 수정, 수정NULL 제약의 목표를 포함한다.
가장 보편적인 실현할 수 없는 전환은 ForeignKey을 일반적인 필드로 바꾸는 것이고 반대로도 마찬가지다.Django는 데이터를 잃어버리지 않은 상태에서 이 변환을 실행할 수 없기 때문에 거부합니다.대체로 단독으로 ManyToManyFieldremove_field()를 호출해야 한다.
만약 데이터베이스가 만족add_field()한다면 Django는 가능한 한 한 한 한 번의 데이터베이스 호출에서 모든 조작을 실행할 것이다.그렇지 않으면 모든 변경에 대해 단독supports_combined_alters 문장을 실행하지만 변경할 필요가 없으면 실행하지 않는다ALTER(South가 자주 하는 것처럼).
등록 정보
다른 규정이 없으면 모든 속성은 읽기만 해야 한다.
connection ALTER
데이터베이스에 연결된 대상SchemaEditor.connectionalias의 실용적인 속성으로 방문할 데이터베이스의 이름을 결정하는 데 사용된다.
여러 데이터베이스 사이에서 이동을 실행할 때, 이것은 매우 유용하다.
번역자: Django 문서 공동 번역 팀, 원문: SchemaEditor.
본고는 CC BY-NC-SA 3.0 프로토콜로 발표되었으며 전재는 작가의 서명과 글의 출처를 보존해 주십시오.
Django 문서 협동 번역팀은 일손이 부족해서 관심 있는 친구가 우리에 가입할 수 있습니다. 완전 공익적입니다.교류군: 467338606.

좋은 웹페이지 즐겨찾기