2009-06-24 5 views
3

내 프로젝트에서 다른 오픈 소스 응용 프로그램을 사용하려고합니다. 문제는 두 개의 다른 앱에서 자체 모델 정의를 사용하는 모델 이름이 같은 것입니다. Django : 모델 이름 충돌

나는 사용하여 시도 :

class Meta: 
     db_table = "db_name" 

을했지만 작동하지 않았다. 나는 아직도 syncdb에서 필드 이름 충돌 오류를 얻고있다. 어떤 제안.

실제로 Pinax로 츠모 (Satchmo)를 통합하기 위해 노력하고

업데이트. 오류는 다음과 같습니다.

맞아요, 테이블 이름은 이미 고유합니다. 나는 모델을 분석했고 모델 'Contact'는 두 가지 다른 두 가지 모델의 두 가지 앱에있다. 이 모델 중 하나를 주석 처리하면 제대로 작동합니다.

두 앱이 모두 PYTHON_PATH에 있고 다른 앱이 이름이 같은 모델을 정의 할 때 충돌이 발생하기 때문에 오류가 발생할 수 있습니다.

+2

분명히 다른 앱의 앱 라벨은 충돌 위험을 줄여야합니다. 오류에 대해 자세히 설명해 주시겠습니까? –

+1

Yepp, db 테이블의 이름은 " _ "이므로 충돌이 발생하지 않을 것입니다. 적어도 PostgreSQL에서 볼 수있는 것입니다. 실패한 syncdb 실행의 실제 outpout과 같은 더 많은 데이터를 제공하십시오 – Ber

+0

애플리케이션을 두 번 포함 시켰습니까? 실제 오류 메시지 외에도 settings.py에서 INSTALLED_APPS 설정을 게시하십시오. –

답변

6

문제는 Satchmo와 Pinax 모두 ForeignKey가 User 인 Contact 모델이 있다는 것입니다. Django는 ForeignKeys 각각에 대해 User에 "contact_set"역방향 관계 속성을 추가하려고합니다. 따라서 충돌이 있습니다.

해결 방법은 relatedax = "pinax_contact_set"같은 인수를 Pinax의 Contact 모델 또는 Satchmo Contact 모델의 ForeignKey에 인수로 추가하는 것입니다. 소스 코드를 직접 편집해야합니다. 당신은 monkeypatching을 통해 그것을 할 수있는 방법을 찾을 수 있을지 모르지만, 나는 그것이 까다로울 것이라고 기대합니다.