【问题标题】:How can I dynamically specify the "list_display" attribute of a django ModelAdmin class?如何动态指定 django ModelAdmin 类的“list_display”属性?
【发布时间】:2013-04-13 11:12:20
【问题描述】:

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

还有其他方法可以动态更改 list_display 字段吗?

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

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

    Ticket #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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-12
      • 2010-09-14
      • 2013-09-26
      • 2012-01-28
      • 2014-06-11
      • 2018-12-03
      • 1970-01-01
      • 2020-09-12
      相关资源
      最近更新 更多