diff --git a/CHANGELOG.md b/CHANGELOG.md
index 50e3d4f..917ca88 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,7 @@
### Feature
* Drop support for GET method. All action are now invoked with POST method.
+* Add option to include inline forms with actions.
### Breaking
* When dealing with a secondary form in action, you cannot simply check the http method to determine if the form should be rendered or processed. You need to check for specific form inputs in POST payload.
diff --git a/README.md b/README.md
index da479d0..9f826aa 100644
--- a/README.md
+++ b/README.md
@@ -157,6 +157,25 @@ increment_vote.attrs = {
}
```
+## Adding inline forms
+
+You can add parameters to the action button by adding Django [Form](https://docs.djangoproject.com/en/4.1/ref/forms/api/#django.forms.Form) object to it. Parameter values can be read form request's `POST` property.
+
+```python
+from django import forms
+
+class ResetAllForm(forms.Form):
+ new_value = forms.IntegerField(initial=0)
+
+def reset_all(self, request, queryset):
+ new_value = int(request.POST["new_value"])
+ queryset.update(value=new_value)
+reset_all.form = ResetAllForm()
+```
+
+Each action with form assigned is rendered in it's own, separate row.
+
+
### Programmatically Disabling Actions
You can programmatically disable registered actions by defining your own
diff --git a/django_object_actions/static/django_object_actions/css/style.css b/django_object_actions/static/django_object_actions/css/style.css
new file mode 100644
index 0000000..ef40852
--- /dev/null
+++ b/django_object_actions/static/django_object_actions/css/style.css
@@ -0,0 +1,6 @@
+ul.object-tools.django-object-actions {
+ margin-top: 0;
+ padding-top: 16px;
+ position: relative;
+ top: -24px;
+}
diff --git a/django_object_actions/templates/django_object_actions/change_form.html b/django_object_actions/templates/django_object_actions/change_form.html
index 846fb7d..b33d787 100644
--- a/django_object_actions/templates/django_object_actions/change_form.html
+++ b/django_object_actions/templates/django_object_actions/change_form.html
@@ -1,21 +1,56 @@
{% extends "admin/change_form.html" %}
{% load add_preserved_filters from admin_urls %}
+{% load static %}
+
+{% block extrastyle %}
+{{ block.super }}
+
+{% endblock %}
{% block object-tools-items %}
{% for tool in objectactions %}
-