Django禁止超级用户查看/ change /页面中的数据

时间:2019-09-27 01:32:11

标签: django

我正在使用Django 2.1.5,并且一直在基于list_display的类中使用ModelAdmin来限制超级用户在管理页面中看到的内容。有些敏感数据只有用户才能访问。

说我有一个基于模型SensitiveObject的应用,其中包含idnamesecret等,我可以简单地将secret从{ {1}},它将永远不会显示在“管理”页面中。但是,当我浏览到list_display时,我将获得这些对象ID的列表,并可以简单地转到/admin/full/myapp/sensitiveobject/,其中将显示所有字段,包括我从/admin/.../sensitiveobject/<id>/change/中排除的字段。 。

是否也有办法限制我在/ change /端点中看到的内容?

1 个答案:

答案 0 :(得分:1)

您的fieldsModelAdmin属性定义了每个对象在更改表单上显示的字段。

您可以使其动态,可以覆盖方法get_fields

def get_fields(request, obj=None):
    fields = []  # Default list of fields
    if request.user.passes_some_test():
        fields.append()  # The secret field
    return fields