Add more buttons with custom behavior to your django admin's submit line.
Project description
More buttons in admin
Add more buttons with custom behavior to your admin's submit line.
Using
- Add
admin_buttonstoINSTALLED_APPS:
INSTALLED_APPS = [
...,
"admin_buttons",
]
- Mix our class in your
ModelAdmin, and define aadmin_buttons_configattribute:
from admin_buttons.admin import AdminButtonsMixin
from django.contrib import admin
from django.db import models
from django.shortcuts import redirect
class SpecialModelAdmin[M: models.Model](AdminButtonsMixin, admin.ModelAdmin[M]):
"""
ModelAdmin for models that do something special. Their special thing
will be done upon the click of a button
"""
admin_buttons_config = [
{
# the button html name
"name": "_dosomethingspecial",
# the method to be called when clicking the button
"method": "do_something_special",
# The button label
"label": _("Do something very special"),
# Optionally, define a condition. If it does not pass, the
# button will not be displayed
"condition": lambda request, context: (
request.user.has_perm("someperm")
and not re.search(r"add/?$", request.path)
),
# Optionally, include extra html after the button
"extra_html": mark_safe_lazy(
'<input type="number" step=1 min=1 max=99 value=1 '
'name="n_times" aria-label="'
f'{_("Number of times do to something special")}">'
),
# Optionally, use a separator before this button:
use_separator: True,
},
]
# The chosen method works as a view. Therefore, it should return a response
# To simply return to the change view, redirect to HTTP_REFERER, as below:
def do_something_special(self, request: HttpRequest, obj: M | None):
obj.something_special()
return redirect(request.META["HTTP_REFERER"])
Development
All contributions are welcome! To setup development:
pip install -r dev.requirements.txtpre-commit install
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters