A Django package that adds keyboard shortcuts to the Django Admin interface for improved accessibility.
A static preview of Django Admin with Keyboard Shortcuts is available at:
https://khanxmetu.github.io/django-admin-keyshortcuts-demo/
Try it out and then provide feedback on the forum thread: Feedback: django admin keyboard shortcuts
Install from pip:
pip install django-admin-keyshortcuts
then add django_admin_keyshortcuts before django.contrib.admin in your INSTALLED_APPS:
INSTALLED_APPS = (
...,
'django_admin_keyshortcuts',
'django.contrib.admin',
...,
)
The following is a list of supported shortcuts
| Description | Shortcut (Windows/Linux) | Shortcut (MacOS) | Scope |
|---|---|---|---|
| Show shortcuts help dialog | ? | ? | Global |
| Go to the site index | g i | g i | Global |
| Toggle sidebar | [ | [ | Global (where it exists) |
| Select previous row for action | k | k | Change List |
| Select next row for action | j | j | Change List |
| Toggle row selection | x | x | Change List |
| Focus actions dropdown | a | a | Change List |
| Focus search field | / | / | Change List |
| Save and go to change list | Ctrl+s | ⌘+s | Change Form |
| Save and add another | Ctrl+Shift+S | ⌘+Shift+S | Change Form |
| Save and continue editing | Ctrl+Alt+s | ⌘+⌥+s | Change Form |
| Delete | Alt+d | ⌥+d | Change Form |
| Confirm deletion | Alt+y | ⌥+y | Delete Confirmation |
| Cancel deletion | Alt+n | ⌥+n | Delete Confirmation |
This package uses the GitHub Hotkey library for handling shortcuts. You can add new ones by extending templates:
- In the admin template, locate the element you want triggered by the shortcut.
- Extend the template and add data-hotkey attribute to the target element, e.g.
data-hotkey="Mod+s". See hotkey string format for supported modifier and key combinations. - Document the shortcut in the help dialog.
View-specific (per page) shortcuts: Extend change_list_shortcuts, change_form_shortcuts, or delete_confirmation_shortcuts.
Example:
{% extends "admin/change_list_shortcuts.html" %}
{% load shortcuts %}
{% block extra_shortcuts %}
{{ block.super }}
<section>
<h3>Custom Shortcuts</h3>
<dl>
<dt class="shortcut-description">A Custom Shortcut</dt>
<dd class="shortcut-keys">{% shortcut_format_kbd "Mod+s" %}</dd>
</dl>
</section>
{% endblock %}Global shortcuts:
Example:
{% extends "admin/shortcuts.html" %}
{% load shortcuts %}
{% block global_shortcuts %}
{{ block.super }}
<section>
<h3>Custom Shortcuts</h3>
<dl>
<dt class="shortcut-description">A Custom Shortcut</dt>
<dd class="shortcut-keys">{% shortcut_format_kbd "Mod+S" %}</dd>
</dl>
</section>
{% endblock %}Tip: Use the Mod key (⌘ on macOS, Ctrl on Windows/Linux). It ensures shortcuts are OS-independent and automatically map to the correct key per platform.
The django-admin-keyshortcuts package is being developed with the goal of eventually merging its functionality into Django core.
This package has been undergoing refinements with respect to GSoC 2025: Keyboard Shortcuts Specification