2012-04-18 2 views
0

서로 다른 DB를 사용하면서 각 "사용자 집합"이 서로 다른 데이터를 볼 수있는 Django 응용 프로그램을 만들고 싶습니다. 이를 달성하기위한 모범 사례가 있습니까?Django : 사용자 집합간에 데이터 분리에 대한 힌트

예. 사용자 A는 기록한 후 다른 사람의 데이터를 볼 가능성이없는 자신의 데이터를보고 관리합니다.

장고 다중 db 기능을 사용하여 여러 dbs를 정의하고 automatic router을 작성하여 현재 요청의 사용자 (일반 db에 auth_user 유지)에 따라 올바른 db를 가리킬 수 있습니다.

마지막 기회로 각 그룹마다 다른 응용 프로그램 폴더를 만들 수 있습니다 (유일한 차이점은 데이터베이스 이름 임). 그러나 나는 더 똑똑한 솔루션을 선호합니다.

+0

무엇이 문제입니까? 어떤 종류의 데이터입니까? django.auth를 사용하여 사용자를 관리하고 있습니까? 사용자 프로필이 있습니까? django.auth 그룹을 사용하고 있습니까? 이것은 대답하기에는 너무 애매한 질문입니다. –

답변

1

many per-object permission apps for django 중 하나를 다시 사용할 수 있습니다.

또 다른 가능성은 다른 설정 파일을 만드는 것입니다. 예를 들어, settings_groupA.py :

from settings import * 
DATABASES = ... 

그리고 당신은 --settings 옵션 ... 등 등 syncdb, 또는 경우 runserver, 같은 관리 명령을 사용할 수

--settings=SETTINGS The Python path to a settings module, e.g. 
         "myproject.settings.main". If this isn't provided, the 
         DJANGO_SETTINGS_MODULE environment variable will be 
         used. 

예 :

./manage.py syncdb --settings=settings_groupA 
./manage.py runserver --settings=settings_groupA 

사용자 세트 당 하나의 데이터베이스를 사용의 장점은 코드를 더 쉽게 유지하고 더 해킹과 django.contrib.admin에 대한 네이티브 지원을 할 수 있다는 것입니다. 그러나 어쨌든 그룹 내에서 개체 별 사용 권한을 얻으려면 첫 번째 해결 방안을 고려해야합니다.

+0

실제로 DB에 사용자에 따라 스위치를 자동 데이터베이스 라우터를 통해 여러 데이터베이스를 사용하여 내 마음을 설정 해요. 그게 좋은 생각이라고 생각하니? (질문에 이것을 삽입합니다.) – Don

+1

아마도 사용자 데이터베이스를 쿼리하면 요청에 대한 연결 커서를 다른 데이터베이스로 전환 할 수 있습니다. 하지만 그것은 데이터베이스 당 하나의 장고 인스턴스를 사용하는 것보다 더 많은주의를 요할 것입니다. 그래서 나는이 방향으로 향하기 전에 두 번 생각할 것입니다. – jpic