在尝试动态更改在 django 管理员的模型列表页面中显示的列时,我尝试覆盖__init__()
我的 ModelAdmin 类的方法,以根据当前权限从 list_display 属性中动态添加或删除特定字段用户。但是,我发现 ModelAdmin 类每次重启只实例化一次,所以这不起作用......
还有另一种动态更改 list_display 字段的方法吗?
在尝试动态更改在 django 管理员的模型列表页面中显示的列时,我尝试覆盖__init__()
我的 ModelAdmin 类的方法,以根据当前权限从 list_display 属性中动态添加或删除特定字段用户。但是,我发现 ModelAdmin 类每次重启只实例化一次,所以这不起作用......
还有另一种动态更改 list_display 字段的方法吗?
在问这个问题时,我偶然发现了答案,所以我想我会分享......
票证#14206表明此功能已在一段时间前添加到 django(我相信是 1.4 版)。ModelAdmin 类现在支持 get_list_display() 方法:
def get_list_display(self, request):
if request.user.has_perm('my_app.my_permission'):
list_display = ('field_1', 'field_2', 'dynamic_field',)
else:
list_display = ('field_1', 'field_2',)
return list_display