如何根据 Django Admin 中的过滤器动态更改 list_view 列?

How can I dinamically change list_view columns based on a filter in Django Admin?

我如何(如果可能的话)根据过滤器更改 Django admin UI 中 list_display 中列的顺序?

例如,如果未应用过滤器,模型的管理列表将显示列 A, B, C, D, E。如果选择了特定过滤器,则显示的列将更改为 B, C, E, A, D.

如果可以的话,我该怎么做?我可以更改列的名称以在我的 ModelAdmin 中使用自定义列设备吗?

事实证明,使用模型管理员的 get_list_display() 方法是可能的。

def get_list_display(self, request):
   filter_value = request.GET.get('foo', False) # False is the default value if the key is not found
   if filter_value and filter_value == 'foo':
       list_display = (B, C, E, A, D)
   else:
       list_display = (A, B, C, D, E)