如何动态指定一个Django的ModelAdmin类的“list_display”属性?(How c

2019-08-31 15:04发布

在试图动态更改显示在Django管理模型列表页面的专栏中,我试图重写__init__()我的ModelAdmin类的方法来动态地从list_display属性添加或删除某一特定领域,根据不同的权限当前用户的。 不过,我发现的ModelAdmin类仅每重启一次实例化,这样就不会工作...

有另一种方式来动态改变list_display场?

Answer 1:

虽然问这个问题,我通过这个答案迷迷糊糊的,所以我想我会分享...

票务#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


文章来源: How can I dynamically specify the “list_display” attribute of a django ModelAdmin class?