2016-11-17 4 views
0

Django 문서에서는 양측의 모델에 많은 필드를 넣을 수 있지만 둘 다 설정할 수는 없다고합니다. 피자와 토핑을 보여주는 예는 어느 피자가 토핑인지 생각하는 것보다 피자에 대한 토핑을 생각하는 것이 "보통"이므로 피자 모델에 필드를 넣으십시오. 확인 ...두 테이블의 Django ManyToMany 필드

그러나 사용 권한과 그룹을 추적하는 내 응용 프로그램에서는 이것이 반드시 필요한 것은 아닙니다. 응용 프로그램은 권한 테이블에 다 - 대 - 다 (many - to - many) 권한을 가지고있는 그룹을 보여줍니다. 또한 그룹을보고 권한이 있는지 확인할 수 있어야합니다. 이것은 이론적으로 동일한 조인 테이블을 사용합니다.

그룹 모델에 many-to-many-through 필드를 추가하고 기존 permission_group 조인 테이블을 지정할 수 없었습니까? ManyToMany 설명서의 권장 사항을 직접 위반하므로 문제가 발생할 수 있습니까?

감사합니다 ...

+0

각 그룹의 권한이 무엇인지 알면 혼란 스럽습니다. 왜 Goups.permission_set.all()을 사용하지 않으시겠습니까? –

+0

Patrick에게 감사의 말을 전합니다. 아래 Makaveli에 대한 제 응답을 참조하십시오. 또한 나는 장고에서 충분히 새로워서 내가 당신이 준 제안을 어디에서 어떻게 사용하는지 모른다. 나는 계속 찾고있을거야 ... – RMittelman

답변

1

나는 그 이유를 실제로 볼 수 없습니다. 전선의 어느 쪽 끝을 만져도 상관 없습니다. 최종 결과는 같습니다. 데이터베이스 레벨에서 일어나는 일은 Django에서 필드를 추가하는 위치와 전혀 상관이 없습니다. 당신은 여전히 ​​양쪽에서 역방향 조회 (, 그것은 편리합니다 약 related_name 설정 문서를 체크 아웃) 할 수 있도록 당신이 얻을 수있는 두
a)는 사용자가

만약을 가지고 일부 특정 권한
b)는 모든 권한을 가진 모든 사람 당신이 제안한 것을 시도해보십시오, Django가 허용한다면 두 개의 평행 한 M2M 필드로 끝날 것입니다 - 그리고 그것이 가능하다고 상상하지만, 전혀 이해가되지 않습니다. 동시에 두 사람의 전화로 같은 사람과 이야기하는 것과 같습니다. 왜 그렇게 할 수 있습니까? 하지마.
Patrick이 언급했듯이 Django는 포괄적 인 권한 시스템을 가지고 있기 때문에 체크 아웃하고 어쩌면 여러분의 필요에 부응 할 수 있습니다.

+0

해답을 가져 주셔서 감사합니다. 여러분이 말한 것에 대해 생각해보십시오. 너의 비교를 이해하지 못한다. 편집을위한 특정 권한을 가져 오는 경우 어떤 권한을 가진 그룹을보고/변경하는 것이 합당한 것 같습니다. 편집 할 특정 그룹을 가져 오는 경우에도 마찬가지입니다. 어느 한쪽 끝에서 동일한 조인 테이블에 더하거나 빼는 것이 합리적입니다. 때로는 그룹에서 일하고 때로는 허가를 받기 위해 노력하고 있습니다. 나는 이것을 이해하고 정말로 이해할 수 있기를 바란다. – RMittelman

1

당신은 아무 것도없는 구별을하고 있습니다. 많은 일대일의 요점은 인 관계의 양쪽에서 자동으로 액세스 할 수 있다는 것입니다. 장고는 당신을 위해 그렇게합니다. 문서가 작성한 요점은 그 차이가 단지 의미 론적 문제라는 것입니다. 그들이 언급하는 경우, 토핑은 피자에 속합니다. 그런 식으로해도 각 토핑에서 피자에 액세스 할 수 있습니다.

+1

이제 어딘가로 가고 있습니다. 내가 할 수있는 일은 토핑 측에 ManyToManyThrough 필드를 두어 관계를 추가하거나 제거 할 수 있다는 것입니다. 위에서 언급 한 것처럼 양쪽 끝에서 액세스 할 수 있다는 것을 알고 있지만 조인 테이블과 상호 작용할 수있는 각 양식에 MTM 필드가 필요합니다. 분명히 "through"를 사용하고 이미 존재하는 조인 테이블을 언급해야 할 것입니다. – RMittelman

+0

나는 장고에 너무 익숙하다. 그래서 나는 대답이 없다. 그러나 나는 당신의 질문이 undestand 쉽고 completly 합법적이라고 말하고 싶습니다. Dajngo에서는 대칭적인 것이 아니지만 현실 세계에서는 대칭 적이어야합니다. – mirek