python-在django admin中有条件地注销或注册模型
作者:互联网
是否可以在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
其他两种方法也一样.这也适用于超级用户.
如果您撤消所有三个权限,则MyModel将不会在管理站点上列出.
如果您只需要从管理站点隐藏模型条目,则只需覆盖
get_model_perms方法.您不必重写权限方法.
def get_model_perms(self, request):
return {}
但是,此方法不会撤消模型的权限.即使该模型未在管理站点上列出,也可以通过输入url进行访问.
标签:django-admin,python,django,django-models,django-admin-tools 来源: https://codeday.me/bug/20191028/1954111.html