我的问题是,在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_display
和list_display_links
字段。当我使用changelist_view
时,我正在实现它。但是当我这样做时,所有用户都隐藏了操作复选框。
如何在使用changelist_view
时显示操作复选框,或者如何在不使用changelist_view
的情况下实现上述操作。请提供解决方案。
答案 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
中。