![](/img/trans.png)
[英]Show different verbose names for django admin models based on a condition
[英]Django Admin: Show different models to different users
我有兩個超級用戶( user1
和user2
)和兩個模型( ModelA
和ModelB
)。 在管理頁面中,我只想向user1
顯示ModelA
,因此user1
只能編輯ModelA
實例而不能編輯ModelB
實例。 同樣,我希望user2
只能編輯ModelB
實例。 有沒有辦法實現這一目標?
這就是has_change_permission
的用途。 您可以向特定用戶授予編輯權限。
class TestAdmin(admin.ModelAdmin):
def has_change_permission(self, request):
if request.user.username == 'xyz':
# Feel free to return false to hide this TestAdmin to xyz user
return False
return True
如果需要分別限制對ModelA
和ModelB
的訪問,則user1
和user2
不能成為超級用戶。 所以,請先重構它。
是的,您可以在 Django 管理界面中授予特定用戶對特定模型的訪問權限。 請查看 Django 文檔: 權限和授權。
還有一個關於設置權限和組的很好的教程: https : //developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Authentication
如果您在閱讀資源后有任何困惑,請告訴我。
謝謝!
在 has_module_permission 中,您可以執行以下操作:
def has_module_permission(self, request):
if request.user.is_superuser: # show for super user anyway
return True
if request.user ... complete the condition:
return True
你應該有一些東西可以區分用戶,比如為不同的用戶(管理員、員工、編輯)提供更多的屬性等等。
if request.user.role = "staff":
return True
類似的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.