编程语言
首页 > 编程语言> > python-在django admin中有条件地注销或注册模型

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