2011-10-19 13 views
1

複数の企業で使用できるdjango adminのインスタンスを1つ作成する必要があります。 スキーマは次のとおりです。複数のdjango管理インスタンス

Company1 
    Branch 1 
      User 1 
      User 2 
    Branch 2 
      User 3 
      ....... 

Company 2 
    Branch 1 
      User 4 
      User 5 
    Branch 2 
      User 6 
      ....... 

この背後にある考え方は、ユーザ1および2を参照することが可能であることである(ただし、編集することはできません)、ユーザーの3のものを。ユーザー1と2がお互いのコンテンツを見たり編集したりできる場所。このすべては、会社1の範囲内にある(のみ)。

私の質問は、そこに同様の問題に直面しているとどのようにこれはDJの管理者で達成することができるかについての彼らの考えを共有したいdevsはありますか?正しい方向にdj管理機能を拡張するために利用できる追加パッケージ?

これは、DJ管理者のために設計されたアイデアに挑戦していることに気付いています(このことについて注意する必要はありません)...しかし、このプロジェクトのために何かを設計して構築するには、私はできるだけ多くのdj管理機能を利用しています。

すべてのご意見をお待ちしております。

答えて

1

私は同様の状況にあり、ユーザーは複数の企業に所属し、「切り替える」という要件が追加されていました。その目的のために、私は「現在の会社」をセッションに入れました。

class CompanyGogglesAdmin(admin.ModelAdmin): 
    def queryset(self, request): 
     qs = super(CompanyGoggleAdmin, self).queryset(request) 
     user_company = request.user.company 
     return qs.filter(**{ 'company' : user_company }) 

あなたにCompanyGogglesAdminを使用することができます:あなたのケースで、あなただけの彼らは見ることが許されているものユーザーに見上げているはずだ場合、それは例えば、ModelAdmin.querysetをオーバーライドすることによって、非常に簡単にする必要がありますユーザーの会社が検索する「会社」によってフィルタリングできるすべてのモデルの基本クラス。また、会社のフィールドを設定可能にすることもできますし、私のように、ユーザーではなくセッションから「現在の」会社を探すこともできます。また、How can I implement a global, implicit filter in Django admin?

+0

あなたの時間のおかげでダニー!私は基本クラスの考え方によく似ています。私は、私が必要とするものを行うには、管理者を作ることを試みる髪の量を考え出していると思うのDJの管理アプローチについて少し考えていた意味深刻です:)それは私は再びCRUDをreimplementし、退屈し、ヘア。 – zzart

関連する問題