2017-02-28 147 views
0

我真的不想問這個問題,但關於此問題的不同教程和文檔中的信息量對我來說是壓倒性的。Django,在管理員中設置用戶模型的角色

我有三類用戶:AdminGuideUser

  1. Admin可以做到在管理頁面什麼。
  2. Admin可以改變簡單UsersGuides
  3. Guide只能創建GuideTour模型對象,並只管理自己的旅遊。
  4. User無法登錄管理頁面。

如何在我的模型定義中設置這些用戶,以便在我的管理頁面中獲得這種角色?

難道是單表繼承模式嗎?

+1

我建議創建自己的管理頁面,而不是使用Django的默認值。當你創建自己的管理頁面時,你有更多的自定義權力,並且在我看來,與修改管理頁面相比,它的工作容易得多。 –

回答

1

如果你使用默認的Django的身份驗證系統(django.contrib.auth),您可以創建用戶組,並設置最在管理界面這些權限(首頁>認證和授權>組)的:

enter image description here

「只管理他自己的旅程」的事情稍微複雜一點 - 您可能希望在Tour模型中有ForeignKey字段,並將用戶鏈接到創建對象(並檢查request.user是否爲「正確」用戶每個編輯嘗試)...

或者定義一個具有所需邏輯的方法。看到這個:Object Ownership in Django

+2

我不認爲這是值得的。在自定義管理頁面中,您可以使用裝飾器來訪問方法,並且只有在用戶具有相關權限時才使用模板中的基本if語句來呈現內容。與修改默認管理頁面的麻煩相比,它具有非常大的靈活性。 –

+0

@almostabeginner:是的,你說得對。取決於他想要做多少修改 - 自定義管理員可能更容易。 – helb

相關問題