13

在尝试动态更改在 django 管理员的模型列表页面中显示的列时,我尝试覆盖__init__()我的 ModelAdmin 类的方法,以根据当前权限从 list_display 属性中动态添加或删除特定字段用户。但是,我发现 ModelAdmin 类每次重启只实例化一次,所以这不起作用......

还有另一种动态更改 list_display 字段的方法吗?

4

1 回答 1

25

在问这个问题时,我偶然发现了答案,所以我想我会分享......

票证#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
于 2013-04-20T00:05:09.890 回答