Zah*_*hid 3 python django django-models django-admin django-admin-tools
是否可以在django admin中有条件地注册或注销模型?我希望某些模型仅在请求满足某些条件时才会出现在django admin中。在我的特定情况下,我只需要检查登录用户是否属于某个特定组,并且如果该用户(即使超级用户)不在该组中,则无需显示模型。我不能在这里使用权限,因为不能排除使用权限的超级用户。或者,有没有办法撤销甚至超级用户在模型上的权限。
可以在中动态管理模型的权限ModelAdmin。覆盖的方法has_add-permission,has_change_permission和has_delete_permission。
class MyModelAdmin(admin.ModelAdmin):
def has_add_permission(self,request):
# if request satisfies conditions:
# return True
#else:
# return False
Run Code Online (Sandbox Code Playgroud)
其他两种方法也一样。这也适用于superuser。如果您撤消所有三个权限,MyModel则不会在管理站点上列出。
如果您只需model要从管理站点隐藏条目,则只需覆盖
get_model_perms方法。您不必重写权限方法。
def get_model_perms(self, request):
return {}
Run Code Online (Sandbox Code Playgroud)
但是,此方法不会撤消的许可model。即使该模型未在管理站点上列出,也可以通过输入url进行访问。
| 归档时间: |
|
| 查看次数: |
1014 次 |
| 最近记录: |