Helpers
Transition availability
Use can_proceed to check if a transition can run before calling it.
from django_fsm import can_proceed
post = BlogPost.objects.get(pk=1)
if can_proceed(post.publish):
post.publish()
post.save()
Permission helpers
Use has_transition_perm to check transition permissions.
See the Permissions section for how to declare permissions on transitions.
from django_fsm import has_transition_perm
def publish_view(request, post_id):
post = get_object_or_404(BlogPost, pk=post_id)
if not has_transition_perm(post.publish, request.user):
raise PermissionDenied
post.publish()
post.save()
return redirect('/')
Model helpers
Considering a model with a state field called "FIELD":
get_all_FIELD_transitionsenumerates all declared transitions.get_available_FIELD_transitionsreturns transitions available in the current state.get_available_user_FIELD_transitionsreturns transitions available in the current state for a given user.
Example: If your state field is called status:
my_model_instance.get_all_status_transitions()
my_model_instance.get_available_status_transitions()
my_model_instance.get_available_user_status_transitions()