是否可以在 django admin 中有条件地注册或注销模型? 我希望某些模型出现在 django admin 中,仅当请求满足某些条件时。在我的特定情况下,我只需要检查登录用户是否属于特定组,如果用户(即使是 super 用户)不在组中则不显示模型。我不能在这里使用权限,因为不能排除 super 用户使用权限。 或者,是否有一种方法可以撤销甚至 super 用户对模型的许可。
最佳答案
可以在 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
其他两种方法同理。这也适用于 super 用户
。
如果您撤销所有三个权限,MyModel
将不会在管理站点上列出。
如果您只需要从管理站点隐藏 model
条目,只需覆盖
get_model_perms
方法。您不必覆盖权限方法。
def get_model_perms(self, request):
return {}
但是,此方法不会撤消模型
的权限。即使该模型未在管理站点上列出,也可以通过输入 url 进行访问。
关于python - 在 django admin 中有条件地注销或注册模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28538461/