Building with Viewflow
Viewflow is a low-code library for Django. It adds workflows (BPMN), CRUD, forms, and reporting on top of normal Django models and views.
How to use this skill
- Fetch
https://docs.viewflow.io/llms-full.txt— the whole documentation in one file. Search it before guessing an API. It is the source of truth. - For a quick orientation, fetch
https://docs.viewflow.io/AGENTS.md. - Follow the conventions below.
Conventions
- Install:
pip install django-viewflow. Add"viewflow"(and"viewflow.workflow"for workflows) toINSTALLED_APPS. - Workflows are
flow.Flowsubclasses; wire nodes withthis.<name>. Store process data inviewflow.jsonstorefields on a proxyProcessmodel — no per-field migrations. - Mount with
Site/Applicationviewsets, not hand-written URL patterns. - For state transitions without the workflow engine, use
viewflow.fsm.Stateand@state.transition(source=..., target=...). The target state is set before the method body runs and rolls back on exception. - A transition permission is a query, not a gate: the method runs regardless.
Check
flow.<transition>.has_perm(user)in the view and raisePermissionDenied. - Workflow permissions are
view_<model>andmanage_<model>; canceling a process needsmanage. - Don't edit
viewflow/in the open-source repo — it is generated.
Examples
See https://docs.viewflow.io/AGENTS.md for minimal flow, URL, and FSM
examples, and https://github.com/viewflow/cookbook for full sample projects.