django-admin-extra-buttons
Django mixin to easily add buttons to any ModelAdmin
What it is and what it does
django-admin-extra-buttons is a Django mixin that lets you add custom buttons, links, and views to Django admin pages using simple Python decorators. Instead of modifying templates or writing boilerplate admin code, you decorate methods in your ModelAdmin class with @button(), @link(), @view(), or @choice() to expose them as clickable actions in the admin interface. It handles routing, rendering, and state management automatically.
The package is actively maintained and supports modern Django versions (4.2, 5.2, 6.0) and Python 3.12+. It has a single runtime dependency on django-stubs and installs with low friction. Common use cases include adding custom admin workflows, linking to external resources, building multi-step wizards, and creating menu-like button groups without touching Django's admin templates.
Use it for:
- Add a custom 'Export to PDF' button to a ModelAdmin that triggers a background task.
- Create a menu-like button in admin that groups related actions (e.g., 'Send Email', 'Archive', 'Duplicate').
- Link to external tools or dashboards directly from the admin change list or detail page.
- Build a multi-step wizard for complex admin operations (e.g., bulk import with validation).
- Add API-only views accessible from admin without rendering a button in the UI.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Adds custom buttons, links, and views to Django admin pages through simple decorators, enabling wizards, actions, and external resource links without modifying core admin templates.
Yes. Low install friction, active maintenance, permissive license, and no known vulnerabilities make this a safe choice. It solves a genuine Django admin pain point—adding custom actions without template hacking—and the decorator-based API is straightforward. Suitable for any Django project needing richer admin customization.
Install
django-admin-extra-buttons on PyPI
pip
pip install django-admin-extra-buttonsuv
uv add django-admin-extra-buttonspoetry
poetry add django-admin-extra-buttonsInstalling django-admin-extra-buttons
Before you install
Low friction install with a single runtime dependency (django-stubs). Active maintenance with recent releases; last commit 2026-05-19. Supports Django 4.2, 5.2, and 6.0 with Python 3.12+.
License in practice
Permissive license (BSD) with no notable restrictions on use, modification, or distribution.
Quickstart
pip install django-admin-extra-buttons
from django_admin_extra_buttons.decorators import button
from django.contrib import admin
class MyModelAdmin(admin.ModelAdmin):
@button()
def my_action(self, request):
return HttpResponse('Action executed')
Requires Django 4.2+ and Python 3.12+; django-stubs must be installed as a runtime dependency.
Verify before relying
- Whether django-stubs is used at runtime or only for type checking during development.
- Specific Django versions tested beyond 4.2, 5.2, and 6.0 mentioned in classifiers.
- Performance impact when adding many buttons to a single ModelAdmin.
Package facts
| License | not declared (permissive) |
| Python support | supports the current Python release (>=3.12) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — django-stubs |
| Maintenance | actively maintained — 87 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 155,721/month — #10,801 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: django_admin_extra_buttons-2.2.1-py3-none-any.whl
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
django-object-actionsAdds custom action buttons to Django admin…
permissive · top 5,000 on PyPI
django-adminplusAdds custom admin views to Django's admin…
permissive · top 5,000 on PyPI
django-admin-sortable2Adds drag-and-drop reordering of model…
permissive · top 5,000 on PyPI
django-annoyingProvides a collection of Django utility…
permissive · top 15,000 on PyPI
wagtail-modeladminAdds Django model administration interfaces to…
permissive · top 15,000 on PyPI
django-admin-data-viewsAdds custom data views to the Django admin…
permissive · top 15,000 on PyPI
django-decorator-includeApplies decorators to Django URL patterns…
permissive · top 15,000 on PyPI
django-admin-inline-paginator-plusAdds pagination to Django admin inline forms,…
permissive · top 15,000 on PyPI
django-admin-inline-paginatorAdds pagination controls to Django admin inline…
permissive · top 5,000 on PyPI
django-loginasAdds a "Log in as user" button to the Django…
permissive · top 5,000 on PyPI