我正在使用Django 2.1.5,并且一直在基于list_display
的类中使用ModelAdmin
来限制超级用户在管理页面中看到的内容。有些敏感数据只有用户才能访问。
说我有一个基于模型SensitiveObject
的应用,其中包含id
,name
,secret
等,我可以简单地将secret
从{ {1}},它将永远不会显示在“管理”页面中。但是,当我浏览到list_display
时,我将获得这些对象ID的列表,并可以简单地转到/admin/full/myapp/sensitiveobject/
,其中将显示所有字段,包括我从/admin/.../sensitiveobject/<id>/change/
中排除的字段。 。
是否也有办法限制我在/ change /端点中看到的内容?
答案 0 :(得分:1)
您的fields
的ModelAdmin属性定义了每个对象在更改表单上显示的字段。
您可以使其动态,可以覆盖方法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