2012-07-26 76 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