2013-04-10 102 views
0

在我的Django應用程序中,用戶可以註冊到該網站並從管理員處獲得staff_user特權。 之後,員工用戶可以使用默認的django管理站點創建和管理一些其他用戶(普通用戶)。 現在,我想讓員工用戶只能看到並管理他從管理網站創建的用戶,我不希望他看到其他員工用戶創建的其他用戶。django工作人員用戶只管理他們自己的用戶

我該怎麼做?我想我需要修改admin.py吧?

回答

1

請勿修改管理網站。

在一般情況下,你必須提供以下工具:

  • 創建組
  • 將用戶添加到組
  • 您的模型創建自定義的權限,用以表示一定的行動

https://docs.djangoproject.com/en/1.4/topics/auth/#custom-permissions

但是,你在問什麼:在django-admin中不可能使用。

Django管理站點是僅作爲完全可信用戶的榮耀開發工具,而不是作爲最終用戶的可定製應用程序。

如果你的項目需要一個管理網站用以下任一...

  • 定製論行政功能。
  • 接觸任何不是的用戶完全可信

...那麼我恐怕你必須創建自己的自定義應用程序。

+0

好吧,我做一個小組,並將其中一些staff_users授權給其他用戶。當我以staff_user的身份登錄並轉到管理員的用戶視圖時,我也看到其他員工用戶創建的普通用戶,我不想這樣做。如何將我創建的用戶隱藏給其他員工用戶? – avafab 2013-04-10 17:28:55

+0

不要我們is_staff使用is_admin功能。 – karthikr 2013-04-10 17:50:48

+0

我能夠向工作人員用戶展示他們自己的參賽作品,但我不明白爲什麼我不能向他展示他自己的用戶。myabe我需要爲用戶模型創建一個額外的領域,以將用戶與他的創作者(工作人員)? – avafab 2013-04-10 18:12:19

0

您可以用自己的替換庫存UserAdmin,它覆蓋queryset()並執行過濾。更大的問題是過濾的內容。默認的用戶模型不在模型實例中存儲「created_by」。因此,無論何時添加用戶,您都需要添加此信息。

如何做到這一點取決於你的Django版本。 Django 1.5引入了「可配置用戶模型」,這使得這非常簡單。 https://docs.djangoproject.com/en/dev/releases/1.5/#configurable-user-model

在較早的版本中,您需要對用戶模型進行monkeatch,或將該信息存儲在1:1附加到用戶的單獨「用戶配置文件」中。 https://docs.djangoproject.com/en/dev/topics/auth/customizing/#extending-the-existing-user-model

關於用戶的信任(這是不是一個話題,但我覺得有必要對thnee的答案評論)在Django管理,檢查出我的答案在這裏的鏈接:Should I use Django's Admin feature?

相關問題