2014-01-07 116 views
2

在這裏使用Django 1.5。我有一個我創建的應用程序,目前有一個大的數據集,如果你願意的話,可以爲一個「帳戶」。這意味着我的應用程序中所有模型中的所有數據都可供所有登錄用戶使用。現在,我希望能夠讓更多的人使用我的應用程序,但使用他們自己的一組數據。所以我需要將用戶分成不同的帳戶,併爲每個帳戶設置不同的數據集。可能有一個或多個用戶可以訪問每個帳戶。目前,我並不需要一個帳戶中的不同用戶具有不同的訪問級別,但我打算讓一個用戶成爲帳戶「所有者」。Django:多帳戶,每個帳戶下有多個用戶,但帳戶特定的數據

enter image description here

我知道,要進行這種轉換,我當然需要一個字段添加到每個模型的外鍵一個新的「賬戶」的模式。但除此之外,我有點模糊。這似乎是Django身份驗證系統圓洞中的一個掛鉤。所以問題是,最好的方法是什麼?

的一點想法我有這麼遠:

  • 只需按帳戶篩選每一個查詢
  • 裹每一個裝飾每一個觀點,但有多個型號,我必須創建一個不同的每個模型的裝飾者?我可以從裝飾者中知道正在訪問哪個模型?
  • 以某種方式使用Auth系統的user_passes_test修飾器,但再次使用不同的型號。
  • 將驗證系統擴展爲包含request.account屬性
  • 爲我的視圖創建新的混合?如果我沒有專門使用CBV,該怎麼辦?
  • 不同的中間件?

我考慮爲每個帳戶使用一個新組,然後按組進行過濾而不是新帳戶模型,但我預測在這種情況下這將不太合適,因爲它並未按照預期使用組。

這不是一個代碼問題,而是更多的大圖片,最佳實踐問題。你會如何處理這個問題?

+0

我沒有得到整個帳戶/用戶/數據分離的目標。你能更詳細地描述它嗎? – Alp

回答

2

你的請求並不那麼奇特:這叫做權威數據 - 你把你的用戶分配給權威機構,每個權威機構都有自己的數據。例如,您可能在組織中擁有多個部門 - 每個部門的數據只能由同一部門的成員編輯。我已經寫了一個博客帖子有一個簡單的方法,使用Django:

http://spapas.github.io/2013/11/05/django-authoritiy-data/

回顧一下後,我建議只增加一個Authority模型,你的User將有ForeignKey(每User將有一個Profile)。

現在,您的所有型號的數據將屬於特定的Authorities將只包含ForeignKeyAuthority。要檢查您可以使用CBV的權限 - django管理員將只能訪問所有數據的中央管理員。我建議不要使用django權限來授權Authority數據。如果你想閱讀更詳細的帖子並在這裏問任何問題。