Skip to content

Instantly share code, notes, and snippets.

GSoC 2025 with Django: django-admin-keyshortcuts

This summer I participated in Google Summer of Code program with Django. My work focused on introducing keyboard shortcuts to the Django admin interface which led to a new package: django-admin-keyshortcuts.

Proposal and Community Discussions

My original GSoC proposal was to improve django-admin-keyboard-shortcuts, a package maintained by one of my mentors, Tom. The plan was to fix bugs, add new keyboard shortcuts, build a command palette, and eventually merge these features into Django's core admin. I initially thought getting my GSoC proposal accepted meant I could dive straight into coding. But Tom explained that Django has its own process for new features, which starts off with community discussions.

After posting on the forum and gathering feedback, the scope was narrowed down to keyboard shortcuts only. It was also suggested to

[GSOC 25 Proposal] Django Admin: Add Keyboard Shortcuts and Command Palette

Abstract

The Django admin user interface relies heavily on mouse-driven actions, making tasks like model navigation, record searching, and bulk operations less efficient for keyboard-first users. This proposal introduces shortcuts and a command palette to streamline workflows, building on existing discussions and community efforts.

Motivation

While Django follows standard accessibility practices, the admin still isn't great for keyboard-first users. Tabbing through various elements to reach the desired field takes way too many steps. I think its also important to address this accessibility gap. Platforms like gmail and github prove how keyboard shortcuts and command palettes speed up daily work: navigating or composing mails with shortcut keys or jumping between pull requests from command palettes are such examples.

In Django, there is already an accepted ticket, a [brief discu

class toctree_includes:
qemu = {
"user/index": ["user/main"],
"specs/index": [
"specs/pci-ids",
"specs/pci-serial",
"specs/pci-testdev",
"specs/ppc-xive",
"specs/ppc-spapr-xive",
"specs/ppc-spapr-numa",