2012-07-26 96 views
1

我在这里的问题是,在Django的管理员列表视图中,当我在管理员中使用changelist_view时,操作复选框没有显示。下面给出了admin.py的代码。请通过它并为我提供解决方案。django管理员操作复选框没有显示在chaneglist_view

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的情况下实现上述功能。请提供解决方案。

回答

3

我在通过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

+0

我添加了'action_checkbox'像你上面建议的,但我没有看到它在我的查询集结果。用户必须是管理员才能看到它? – CatherineAlv 2017-09-29 17:54:07