2009-09-09 1 views
2

다중 테이블 상속을 사용할 때 Django는 기본 클래스와 파생 클래스의 두 테이블을 만듭니다. 하나는 기본 클래스이고 다른 하나는 첫 번째 테이블을 가리 킵니다. 파생 된 테이블을 삭제하는 동안 기본 테이블 항목을 유지하고 다른 모델에 대한 다른 항목을 만드는 방법이 있습니까?장고 모델 상속 - 모델 유형을 변경할 수 있습니까?

간단히 말하면 : A, B (A에서 파생), C (A에서 파생 됨) 모델이 있습니다. B 유형의 객체를 C 유형으로 변환하려고합니다. A는 항목 세트로 사용되므로 항목을 ForeignKey로 가리키기 때문에 복사가 좋은 해결책이 아닙니다.

답변

0

기본 제공 방법이 없습니다. FK가 가리키고 있기 때문에 기본 테이블의 항목을 유지해야하는 경우 원시 SQL을 사용하여 B 및 C 테이블을 조작하는 관리자 메소드를 작성해야합니다.

참조 무결성을 지원하지 않는 RDBMS를 사용하는 경우 데이터를 복사하고 B 인스턴스를 삭제 한 다음 PK를 수동으로 B 's PK로 설정하여 C 인스턴스를 만들 수 있습니다.

+0

MySQL은 InnoDB가 엔진 (즉, 최신 생산 설비)으로 사용될 때마다 참조 무결성을 5 년 이상 지원했습니다. –

+0

그래도 어쨌든 발굴을해야했습니다 :-) –

0

내장 된 방법이 없다면 수동으로 수행하는 것이 그리 좋지는 않습니다. c 복사본을 b으로 만든 다음 b.items.update(itemset=c)을 작성하십시오.