python - 在 django admin 中有条件地注销或注册模型

标签 python django django-models django-admin django-admin-tools

是否可以在 django admin 中有条件地注册或注销模型? 我希望某些模型出现在 django admin 中,仅当请求满足某些条件时。在我的特定情况下,我只需要检查登录用户是否属于特定组,如果用户(即使是 super 用户)不在组中则不显示模型。我不能在这里使用权限,因为不能排除 super 用户使用权限。 或者,是否有一种方法可以撤销甚至 super 用户对模型的许可。

最佳答案

可以在 ModelAdmin 中动态管理模型的权限。 覆盖方法 has_add_permissionhas_change_permissionhas_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/

相关文章:

python - 如何对热图的 numpy 系数数组进行聚类

python - PYGTK TreeView 中未显示不同的列值

django - 访问模板或中间件中的命名 URL 参数

python - Django 计数聚合与相关字段上的过滤器不起作用

python - 构建有向多重图 (Python)

python - 使用 pandas.dataframe.query method() 将数据框替换为子集的适当方法是什么?

python - Django查询问题

python - celery 节拍有时会停止工作

python - 使用查询集 Model.objects.aggregate(Sum(***)) 对数据库列的所有值求和

python - 在django中查询时间戳字段