2011-10-19 175 views
1

我需要構建一個可供多個公司使用的django admin實例。 的模式是:多個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可以查看和編輯彼此的內容。所有這些都在Company1範圍內(僅)。

我的問題是有沒有誰面臨類似的問題,並希望分享他們的想法如何可以在dj管理中實現?可以用來擴展dj管理功能的正確方向的任何附加軟件包?

我意識到,這挑戰了什麼是dj管理員設計的想法(無需謹慎)...但由於沒有足夠的手來設計和構建這個項目從頭開始我需要儘可能多地利用dj管理功能。

所有的想法將不勝感激!

回答

1

我處於類似的情況,需要增加一個用戶可能在多個公司,並可以「​​切換」。爲此,我將「現任公司」納入會議。如果在你的情況下,你只是在他們被允許看到什麼用戶仰視,它應該是很容易的,通過重寫ModelAdmin.queryset,例如:

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作爲所有這些模型的基類都可以被「公司」過濾,並由用戶公司查找。您還可以使該公司字段可配置,或者像我一樣從會話而不是用戶查找「當前」公司。另請參見How can I implement a global, implicit filter in Django admin?

+0

謝謝你的時間丹尼!我非常喜歡基類的想法。想了一下dj-admin的方法,我覺得頭髮的數量會讓我想要讓管理員做我想做的事情,這是很重要的:)這麼痛苦,因爲我會再次實現CRUD,感到無聊,讓我的頭髮。 – zzart