0

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

たとえば、ユーザーAは、ログに記録した後、自分のデータを表示および管理しますが、他のユーザーのデータを表示することはできません。

Djangoマルチデータベース機能を使用して複数のデータベースを定義し、現在のリクエストのユーザーに応じて正しいデータベースを指す自動ルーターを作成できます(auth_userを共通のデータベースに保持します)。

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

4

1 に答える 1

1

django用の多くのオブジェクトごとの権限アプリの1つを再利用することを検討できます。

別の可能性は、異なる設定ファイルを作成することです。たとえば、settings_groupA.py:

from settings import *
DATABASES = ...

次に、syncdbやrunserverなどの管理コマンドを--settingsオプションとともに使用できます。

--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をネイティブサポートできることです。ただし、とにかくグループ内でオブジェクトごとのアクセス許可を取得する場合は、最初の解決策をそのまま使用することをお勧めします。

于 2012-04-18T11:41:56.207 に答える