How can I dynamically specify the “list_display” attribute of a django ModelAdmin class?

前端 未结 1 1872
死守一世寂寞
死守一世寂寞 2020-12-16 15:16

In trying to dynamically change the columns that are displayed in the model-list page of the django admin, I tried overriding the __init__() method of my ModelA

1条回答
  •  失恋的感觉
    2020-12-16 15:56

    While asking this question, I stumbled across the answer, so I thought I'd share...

    Ticket #14206 indicates that this feature was added to django some time ago (version 1.4, I belive). ModelAdmin classes now support a get_list_display() method:

    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
    

    0 讨论(0)
提交回复
热议问题