2011-05-03 1 views
0

그래서 내 프로젝트에서 사용자 모델을 직원 클래스로, 그룹 모델을 PermGroup 클래스로 확장하려고합니다. 그러나 PermGroup을 Staff 그룹 필드 (User에서 상속)에 저장하면 PermGroup 개체가 Group으로 저장되고 PermGroup 클래스에 정의 된 모든 필드와 메서드가 제거됩니다. 그래서 최선의 행동 방침은 그룹 필드를 재정의하는 것이라고 결정했습니다. 내가 발견 한 이전 stackoverflow 질문 및 장고 설명서에서이 작동합니다.장고 : manyToManyField 대신 ManyRelatedManager가 필요합니다.

class Staff(User): 
    User.groups = models.ManyToManyField('PermGroup', blank=True) 

나는 클래스가 파일에 나중에 표시하고 PermGroup는 직원 클래스에 의존하는 필드를 가지고 있기 때문에 'PermGroup'를 사용합니다, 그래서 난 순서를 전환하는 경우 난 단지, 같은 문제가있을 것입니다 PermGroup 클래스에 있습니다.

이제 문제는 그룹이 ManyToManyField 개체가되어 다른 "manytomany"필드가 ManyRelatedManagers라는 것입니다. 그룹을 ManyRelatedManager로하고 싶지만 어떻게해야할지 모르겠다.

'PermGroup'모델 호출을 사용하여 그룹을 초기화 할 때 그룹을 ManyRelatedManager로 가져올 수 있습니까?

내 접근 방식이 잘못되어 직원 클래스에 PermGroups를 저장하는 대안을 제안 할 수 있습니다. 나는 그것을 매우 감사 할 것이다.

답변

0

직원을 자신의 해당 사용자에게 ForeignKey (OneToOneField, 더 정확하게하려면) 표준 모델로 지정하지 않는 이유는 무엇입니까?

그리고 순환 종속성 문제를 제거하려면 하나만 다른 종속성을 만들어야합니다. 예를 들어, PermGroup 모델은 해당 그룹의 Staff 구성원의 ManytoMany 필드를 가질 수 있습니다. Staff가 PermGroup을 가질 필요는 없습니다. 구성원이 속한 그룹을보고 싶다면 다음과 같이하면됩니다 :

groups_theyre_in = PermGroups.objects.filter(staff_members__id=id_were_looking_for) 
+0

Ok 우리는 PermGroup의 의존성을 제거하기 위해 노력했습니다. 직원. 내 원래의 문제는 여전히 남아 있습니다. 사용자 그룹 필드를 재정의 할 때 "User.groups = models.ManyToManyField (PermGroup, blank = True)" 그룹을 ManyRematedManager 개체가 아닌 ManyToManyField 개체로 만듭니다. 객체를 변경하지 않고이 필드를 어떻게 재정의 할 수 있습니까? – Colin