2009-12-30 3 views
1

django를 사용하여 다른 유형의 회사를 나타내는 모델 클래스 A와 B가 있다고 가정 해보십시오. 각 회사는 관련 사용자가 여러 명일 수 있습니다. 분명히 장고의 사용자 모델을 사용하여 로그인 등을 얻고 싶습니다. 그 일을 어떻게 하죠? 두 개의 외래 키를 가진 UserProfile을 추가 할 수 있습니까? 하나는 A에, 하나는 B로 (그리고 User가 작동하는 회사를 가리키는 null이 아닙니다)? 아니면 다른 방법이 있습니까?django 사용자 관계

감사합니다.

답변

1

사용 상속 당신이 A 형 또는 B (? 차이가 어쨌든 무엇)의 여부를 결정하게됩니다 회사 내부의 특정 필드를 가질 수 있습니다 그 클래스를 상속하고 ClassACompany와 ClassBCompany가 필요로하는 것을 추가하십시오.

이렇게하면 UserProfile에 Company에 대한 외래 키가있을 수 있습니다. 회사에서 특정 유형의 회사로 이동해야하는 경우 in the docs과 같은 방법으로 처리 할 수 ​​있습니다.

+0

아하, 고마워! 링크 주셔서 감사합니다. – Colin

1

왜 회사에 대한 수업이 하나도 없습니까? 그러면 시스템이 훨씬 더 간단해질 것입니다. 일반 필드와, 회사의 수퍼 클래스를 정의하고 :

당신은 다음

+0

서로 다른 회사가 서로 다른 데이터를 가지고 서로 다른 관계를 가지고 있기 때문에 - A는 여러 개의 공장을 가지고 있고 B는 여러 개의 선박을 가지고 있습니다. – Colin

+0

그러면 모델을 좀 더 세분화 할 수 있습니다. 회사가 유형 (선박 등)이있는 자산 인스턴스가 여러 개있을 수 있습니다. 예를 들면. –

0

CompanyA와 CompanyB에 실제로 다른 필드가 있어야하는 경우 ForeignKey가 가리키는 공통 회사 클래스에서 파생시킬 수 있습니다.

0

회사 모델을 참조해야하고 필요할 경우 회사 CompanyA 및 CompanyB를 하위 클래스로 지정해야합니다. 간단히 말해서 회사 클래스는 AB 값을 갖는 type 속성을 가질 수 있습니다. 그러면 서브 클래 싱을 피할 수 있습니다.