2

changelist_view我的问题是,在 django 管理员列表视图中,当我在管理员中使用时,操作复选框没有显示。我已经给出了admin.py下面的代码。请仔细阅读并为我提供解决方案。

def changelist_view(self, request, extra_context=None):
    if request.user == 'admin':
        self.list_display_links = ('project', )
        self.list_display = ('project', 'task_name', 'assignee_role', 'assignee_name', )
    else:
        self.list_display_links = ('task_name', )
        self.list_display = ( 'task_name', 'project', 'priority', )
    return super(ModelAdmin, self).changelist_view(request, extra_context = None)

这里我想要实现的是根据用户更改list_display和字段。list_display_links当我使用changelist_view. 但是当我这样做时,所有用户的操作复选框都被隐藏了。

那么如何在使用时显示动作复选框,changelist_view或者如何在不使用changelist_view. 请提供解决方案。

4

1 回答 1

4

在浏览了django安装源文件后,我找到了解决方案django/contrib/admin/options.py。在使用时显示动作复选框将changelist_view其包含在list_display. 但我无法弄清楚为什么它在使用时被隐藏changelist_view

def changelist_view(self, request, extra_context=None):
    if request.user == 'admin':
        self.list_display_links = ('project', )
        self.list_display = ('action_checkbox', 'project', 'task_name', 'assignee_role', 'assignee_name', )
    else:
        self.list_display_links = ('task_name', )
        self.list_display = ( 'task_name', 'project', 'priority', )
return super(ModelAdmin, self).changelist_view(request, extra_context = None)

因此,仅当当前登录用户为 admin 时才会显示操作复选框,因为它包含在list_display.

于 2012-07-26T13:00:15.443 回答