2012-04-18 6 views
0

それぞれの「ユーザーのセット」が異なるDBを使用していたため、異なるデータを表示できるDjangoアプリケーションを構築したいとします。これを達成するためのベストプラクティスはありますか?Django:一連のユーザー間でデータを隔離するヒント

など。 ユーザAは、ロギング後、自分のデータを見たり、管理したりすることができます。

Djangoのマルチdb機能を使用していくつかのdbsを定義し、現在のリクエストのユーザーに応じて正しいdbを指すようにautomatic routerを作成することができます(共通のデータベースでauth_userを維持する)。

最後のチャンスとして、グループごとに異なるアプリケーションフォルダを作成できます(唯一の違いはデータベース名です)が、よりスマートなソリューションが好まれます。

+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 

ユーザーのセットごとに1つのデータベースを使用する利点は、あなたが簡単にあなたのコードを維持し、それらをなしハックとdjango.contrib.adminのネイティブサポートを持たせることができるということです。しかし、グループ内でオブジェクトごとのパーミッションを使用する場合は、最初の解決策にまっすぐに進むこともできます。

+0

私は実際には、ユーザーに応じてデータベースを切り替える自動データベースルーターを介して複数のデータベースを使用することに私の心を設定しています。それは良い考えだと思いますか? (私は質問にこれを挿入しています) – Don

+1

多分あなたはあなたが別のデータベースに要求の接続カーソルを切り替えることができるユーザーのデータベースを照会する場合。しかし、これは、データベースごとに1つのdjangoインスタンスを使用するよりもはるかに注意が必要になるので、私はこの方向に向かう前に二度考えることになります。 – jpic

関連する問題