2015-02-07 3 views
0

많은 열이있는 큰 데이터베이스 테이블이 있습니다. 다음과 같은 내용 :django에서 데이터베이스 테이블의 개별 열에 대한 권한?

+------------+-------+-------+-----+--------+ 
| postalcode | stat1 | stat2 | ... | stat70 | 
+------------+-------+-------+-----+--------+ 
| V0A1A1  | 0.1 | 10 | ... | 100 | 
| V0A1A2  | 0.4 | 20 | ... | 300 | 
| V0A1A3  | 0.2 | 40 | ... | 200 | 
| ....  | ... | ... | ... | ... | 
| Z9Z9Z9  | 0.3 | 30 | ... | 400 | 
+------------+-------+-------+-----+--------+ 

내 django 앱은 현재 간단한 SQL 쿼리를 통해 모든 사용자에게 모든 사용자에게 액세스 권한을 부여합니다.

Django API를 통해 데이터에 액세스 할 수 있기를 원하며 특정 사용자에게 테이블의 일부 열에 특정 사용자에게 권한을 부여 할 수 있기를 원합니다.

어떻게 이것을 장고 모델의 관점에서 접근해야합니까?

각 열을 해당 테이블과 구분할 수있는 모델로 만들어야합니까? 그것은 많은 모델과 많은 테이블이 될 것입니다!

아니면 전체 테이블에 대해 단일 모델을 만들어야합니까? 그것은 많은 분야가 될 것입니다! 사용자와 필드를 어떻게 연결해야합니까?

아니면 테이블에 대한 장고 모델을 만들지 말고 대신 테이블 열에 대한 사용 권한을 추적하는 메타 모델을 만들고이를 사용하여 SQL 쿼리를 데이터 테이블에 중재 할 수 있습니까?

+------+--------+------------+ 
| user | column | permission | 
+------+--------+------------+ 
| 1 | stat1 | true  | 
| 2 | stat1 | false  | 
| 2 | stat2 | false  | 
| 3 | stat1 | true  | 
| 1 | stat3 | false  | 
| ... | ... | ...  | 
| 100 | stat70 | true  | 
+------+--------+------------+ 

어쨌든 매우 장고하지 않습니다.

더 깨끗하고 더 많은 장고 솔루션이있을 것으로 기대하지만, 나에게 발생하지는 않습니다. 제안?

답변

1

나는 최상의 솔루션은 권한이 어떻게 "조각"에 달려 있다고 생각합니다. 고유 한 열 집합에 각각 액세스 할 수있는 사용자 그룹이 몇 개만있는 경우이 열을 여러 모델에 넣을 수 있습니다.

권한이 개별적 일 수 있고 일반적으로 70 개 열 또는 그 다양한 조합의 데이터가 필요한 경우 하나의 테이블에 보관하고 (수십 개의 조인을 방지하기 위해) 설명 된 권한 모델을 포함시킵니다.

django.contrib.auth.permissions는 당신이 필요로 이미 당신을 주어야한다 : 70 권한 - 객체, 각 열에 하나를 만들고, 개별 사용자 또는 사용자 그룹에 하나를 매핑 (당신의 개성의 등급에 따라 허가를-벡터)

+0

감사의 오름차순 내 상황은 분명히 당신이 묘사 한 두 번째 것입니다. 매우 세분화 된 사용자 별 (또는 적어도 그렇게 될 수도 있으므로 계획을 세울 필요가 있습니다). –

관련 문제