django管理员操作复选框未显示在chaneglist_view中

时间:2012-07-26 06:20:59

标签: django django-admin

我的问题是,在django管理列表视图中,当我在管理员中使用changelist_view时,未显示操作复选框。我在下面给出了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_displaylist_display_links字段。当我使用changelist_view时,我正在实现它。但是当我这样做时,所有用户都隐藏了操作复选框。

如何在使用changelist_view时显示操作复选框,或者如何在不使用changelist_view的情况下实现上述操作。请提供解决方案。

1 个答案:

答案 0 :(得分: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中。