django-object-actions
A Django app for adding object tools for models in the admin
Decision gist · record as of 2026-08-14
Yes. Low install friction, no dependencies, active maintenance, permissive license, and a clear use case for Django projects that need per-object admin tools. The API mirrors Django's native admin actions, making it easy to adopt. Install if you want custom buttons on admin detail pages without building custom views.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Django to be installed; add django_object_actions to INSTALLED_APPS or manually copy its template file.
- Low friction install with no runtime dependencies.
- Active maintenance with recent releases; last commit 2026-05-29 and 812 repository stars indicate ongoing support.
License · maintenance · safety
Apache-2.0 (permissive) — Apache-2.0 permissive license allows commercial and private use with minimal restrictions; attribution required.
last release 2026-05-28 (78 days) · last repo commit 2026-05-29 · 812 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 1,581,165 downloads/mo, #3,740 on PyPI
Alternatives
Verify before relying
pip install django-object-actions
# In admin.py
from django_object_actions import DjangoObjectActions, action
class ArticleAdmin(DjangoObjectActions, admin.ModelAdmin):
@action(label="Publish")
def publish_this(self, request, obj):
obj.status = 'published'
obj.save()
change_actions = ("publish_this",)- Whether the package works with all currently-supported Django versions (fact sheet lists Python support but not Django version constraints)
What it is and what it does
Django Object Actions extends Django's admin interface to let you define custom action buttons that operate on individual model instances, not just querysets. Instead of writing custom admin views or monkey-patching the change form, you decorate methods with @action and register them in change_actions or changelist_actions attributes, much like Django's built-in admin actions but tailored to single objects.
The package handles rendering buttons on the detail and list pages, routing requests to your action methods, and optionally rendering confirmation forms or intermediate pages. It supports both GET and POST methods, custom labels and tooltips, conditional action visibility, and can redirect to external URLs or return custom responses. No runtime dependencies means minimal installation friction.
Use it for
- Add a 'Publish' button to article admin that publishes a single article without leaving the detail page.
- Create a 'Send Email' action on user objects that triggers a confirmation form before sending.
- Build a 'Duplicate' action that clones an object and redirects to the new instance's edit page.
- Add bulk 'Mark as Reviewed' actions to a changelist that operate on querysets like standard admin actions.
- Implement conditional actions that only appear for superusers or when an object meets certain state criteria.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
Low install friction, no dependencies, active maintenance, permissive license, and a clear use case for Django projects that need per-object admin tools. The API mirrors Django's native admin actions, making it easy to adopt. Install if you want custom buttons on admin detail pages without building custom views.
Install
django-object-actions on PyPI
Before you install
Low friction install with no runtime dependencies. Active maintenance with recent releases; last commit 2026-05-29 and 812 repository stars indicate ongoing support.
Requires Django to be installed; add django_object_actions to INSTALLED_APPS or manually copy its template file.
License in practice
Apache-2.0 permissive license allows commercial and private use with minimal restrictions; attribution required.
Quickstart
pip install django-object-actions
# In admin.py
from django_object_actions import DjangoObjectActions, action
class ArticleAdmin(DjangoObjectActions, admin.ModelAdmin):
@action(label="Publish")
def publish_this(self, request, obj):
obj.status = 'published'
obj.save()
change_actions = ("publish_this",)
Verify before relying
- Whether the package works with all currently-supported Django versions (fact sheet lists Python support but not Django version constraints)
Package facts
| License | Apache-2.0 permissive |
| Python support | Supports the current Python release >=3.9 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | None |
| Maintenance | Actively maintained 78 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,581,165 / month, #3,740 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableFramework :: DjangoIntended Audience :: DevelopersLicense :: OSI Approved :: Apache Software LicenseOperating System :: OS IndependentProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.9 |
Evidence: django_object_actions-5.1.2-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “django admin custom actions”
- django-object-actionsAdds custom action buttons to Django admin object detail and…
- django-admin-extra-buttonsAdds custom buttons, links, and views to Django admin pages through…
- django-concurrencyAdds optimistic locking to Django models to prevent concurrent…
Give your agent the search over MCP, or paste the wish link into any chat.
More Dynamic Content packages
MarkupSafe provides a text object that escapes special characters so untrusted strings can be safely embedded in HTML and XML without injection attacks.
Jinja2 is a templating engine that renders dynamic content by combining templates with Python-like syntax and data, supporting template inheritance, macros, autoescaping, and sandboxed execution.
Soupsieve is a CSS selector library designed to work with Beautiful Soup 4 to select, match, and filter HTML and XML elements using modern CSS selectors from CSS level 1 through CSS level 4 specifications.
Install it if you use Beautiful Soup for HTML or XML parsing and want modern CSS selector support.
Werkzeug is a WSGI utility library providing request/response objects, URL routing, an interactive debugger, HTTP utilities, and a development server for building web applications.
Flask is a lightweight WSGI web application framework for building web applications in Python, from simple single-page sites to complex multi-route applications.
Mako compiles Python-embedded templates into Python modules for fast rendering, supporting layout inheritance, custom functions, and direct Python expressions within template syntax.
See also django-admin-csvexport · django-admin-extra-buttons · django-guardian · django-admin-list-filter-dropdown · django-more-admin-filters · django-admin-autocomplete-filter · django-loginas · django-admin-rangefilter · django-adminplus · django-nonrelated-inlines