diff --git a/README.md b/README.md
index a35f2243..2d7cc7d0 100644
--- a/README.md
+++ b/README.md
@@ -39,6 +39,7 @@ django-admin-interface is a modern **responsive flat admin interface customizabl
- `django-dynamic-raw-id`
- `django-json-widget`
- `django-modeltranslation`
+ - `django-object-actions`
- `django-rangefilter`
- `django-streamfield`
- `django-tabbed-admin`
diff --git a/admin_interface/templates/admin/change_form.html b/admin_interface/templates/admin/change_form.html
index 73014c2d..ebd2ab92 100644
--- a/admin_interface/templates/admin/change_form.html
+++ b/admin_interface/templates/admin/change_form.html
@@ -1,6 +1,19 @@
{% extends "admin/change_form.html" %}
{% load admin_interface_tags static %}
+{% block object-tools-items %}
+ {% admin_interface_use_object_actions adminform.model_admin as show_object_actions %}
+ {% if show_object_actions %}
+ {% for tool in objectactions %}
+
+ {% url tools_view_name pk=object_id tool=tool.name as action_url %}
+ {% include 'django_object_actions/action_trigger.html' %}
+
+ {% endfor %}
+ {% endif %}
+ {{ block.super }}
+{% endblock object-tools-items %}
+
{% block field_sets %}
{% get_admin_interface_setting "show_fieldsets_as_tabs" as show_fieldsets_as_tabs %}
diff --git a/admin_interface/templates/admin/change_list.html b/admin_interface/templates/admin/change_list.html
index 2e8bde3a..e8c9ccba 100644
--- a/admin_interface/templates/admin/change_list.html
+++ b/admin_interface/templates/admin/change_list.html
@@ -1,5 +1,19 @@
{% extends "admin/change_list.html" %}
{% load admin_interface_tags admin_list i18n %}
+
+{% block object-tools-items %}
+ {% admin_interface_use_object_actions cl.model_admin as show_object_actions %}
+ {% if show_object_actions %}
+ {% for tool in objectactions %}
+
+ {% url tools_view_name tool=tool.name as action_url %}
+ {% include 'django_object_actions/action_trigger.html' %}
+
+ {% endfor %}
+ {% endif %}
+ {{ block.super }}
+{% endblock object-tools-items %}
+
{# copied from django 5.1.2 #}
{% block filters %}
diff --git a/admin_interface/templatetags/admin_interface_tags.py b/admin_interface/templatetags/admin_interface_tags.py
index a675dff1..6e5c9afa 100644
--- a/admin_interface/templatetags/admin_interface_tags.py
+++ b/admin_interface/templatetags/admin_interface_tags.py
@@ -15,6 +15,13 @@
from admin_interface.metadata import __version__
from admin_interface.models import Theme
+try:
+ from django_object_actions import BaseDjangoObjectActions
+
+ DJANGO_OBJECT_ACTIONS_INSTALLED = True
+except ImportError:
+ DJANGO_OBJECT_ACTIONS_INSTALLED = False
+
register = template.Library()
@@ -191,3 +198,10 @@ def admin_interface_use_changeform_tabs(adminform, inline_forms):
@register.filter
def admin_interface_slugify(name):
return slugify(str(name or ""))
+
+
+@register.simple_tag
+def admin_interface_use_object_actions(model_admin):
+ return DJANGO_OBJECT_ACTIONS_INSTALLED and isinstance(
+ model_admin, BaseDjangoObjectActions
+ )