django_fsm.admin.FlowAdminMixin adds transition actions and state charts
to Django admin. This optional integration uses Viewflow Pro templates and
static files; install and configure Viewflow Pro alongside django-fsm.
The examples use the model and flow from Separate Flow Classes. The flow’s
on_success callback saves the new state.
from django.contrib import admin
from django_fsm.admin import FlowAdminMixin
from .flow import ReportFlow
from .models import Report
@admin.register(Report)
class ReportAdmin(FlowAdminMixin, admin.ModelAdmin):
readonly_fields = ('state_field',)
flow_state = ReportFlow.state_field
The mixin constructs ReportFlow(obj) for each object. Override
get_object_flow(self, request, obj) if your flow needs additional context.
Transition views check permissions and conditions before calling the method.
By default transition forms do not edit model fields. To allow specific fields:
def get_transition_fields(self, request, obj, slug):
if slug == 'approve':
return ['text']
return None
The change list and form use admin/fsm_change_list.html and
admin/fsm_change_form.html. Transition forms search these paths in order:
admin/<app_label>/<model_name>/fsm_transition_form.htmladmin/<app_label>/fsm_transition_form.htmladmin/fsm_transition_form.htmlSet transition_form_template to select a template explicitly.
The mixin supports reversion.admin.VersionAdmin through its
create_revision() wrapper.