2

ここでの問題は、管理者で使用すると、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。解決策を提供してください。

4

1 に答える 1

4

django インストール ソース ファイルを調べたところ、解決策が見つかりましたdjango/contrib/admin/options.pychangelist_viewinclude it in使用時にアクションチェックボックスを表示します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)

したがって、アクション チェックボックスは、現在ログインしているユーザーが管理者である場合にのみ表示されます。これは に含まれているためですlist_display

于 2012-07-26T13:00:15.443 に答える