是否可以在 django admin 中有条件地注册或取消注册模型?我希望某些模型出现在 django admin 中,前提是请求满足某些条件。在我的具体情况下,我只需要检查登录用户是否属于特定组,如果用户(即使超级用户)不在组中,则不显示模型。我不能在这里使用权限,因为不能排除超级用户使用权限。或者,有没有办法撤销模型上超级用户的权限。
1537 次
2 回答
7
模型的权限可以在ModelAdmin. 覆盖方法has_add-permission和。has_change_permissionhas_delete_permission
class MyModelAdmin(admin.ModelAdmin):
def has_add_permission(self,request):
# if request satisfies conditions:
# return True
#else:
# return False
其他两种方法也是如此。这也适用于superusers。如果您撤销所有三个权限MyModel,则不会在管理站点上列出。
如果您只需model要从管理站点隐藏条目,只需覆盖
get_model_perms方法。您不必重写权限方法。
def get_model_perms(self, request):
return {}
但是,此方法不会撤销model. 即使该模型未在管理站点上列出,也可以通过输入 url 访问它。
于 2015-02-26T03:47:52.600 回答
0
我在本地尝试了几种方法,包括覆盖 AdminSite,但鉴于在初始化应用程序时会加载所有与管理相关的代码,最简单的方法是依赖权限(而不是给每个人超级用户访问权限) .
于 2015-02-16T09:56:08.147 回答