Forms that scale
Familiar API with smarter defaults than Django forms. Great HTML by default, integrates with your design system, and handles complexity without glue code.
iommi is a productivity toolkit for Django that lets you ship complex UIs fast: forms, tables, pages, and an admin - without the boilerplate. Compose powerful parts, keep your code tiny, and stay in Python.
# views.py
from iommi import Table, Form, Page
from .models import Album
class AlbumPage(Page):
class Meta:
title = 'Albums'
create_album = Form.create(auto__model=Album)
albums = Table(auto__model=Album)
Auto forms + powerful tables on one page. No handwritten templates needed. No namespace conflicts, iommi handles it automagically.
Familiar API with smarter defaults than Django forms. Great HTML by default, integrates with your design system, and handles complexity without glue code.
Sorting, filtering, pagination, bulk actions - configured in Python. Deliver fast without drowning in template code.
Compose pages declaratively and ship a polished admin that lives inside your app - no separate project, no styling mismatch.
iommi removes repetitive glue code so you can think in "what" not "how". Declare intent in Python and get great UX by default.
Example: Set the initial filter of a table, 5 levels of nesting deep. Just clean configuration, no need to create 5 classes.
Table(
auto__model=Album,
columns__artist__filter__include=True,
query__form__fields__artist__initial=
lambda **_: Artist.objects.get(name='Dio'),
)
Use as‑is or customize with clean hooks. Everything is overrideable.
class AlbumTable(Table):
class Meta:
auto__model = Album
columns__artist__filter__include = True
columns__year__filter__include = True
bulk__delete__include = True
Turn on filters and bulk actions with a few lines. No template hacks needed.
"I am now in love with iommi forms 😄"
"By the time I'm done with this project, it will be impossible for me not to use iommi in future projects"
"btw @boxed thanks for your amazing work! iommi is a wonderful framework 😄"
"Great lib, I use it on multiple projects already. This is the proper way to make forms, tables with pagination and filtering, and more."
Add iommi to your project and start declaring UIs in Python. Works with your existing Django stack.
# 1) Install
pip install iommi
# 2) Add to INSTALLED_APPS
INSTALLED_APPS = [
...,
'iommi',
]
# 3) Add to MIDDLEWARE
MIDDLEWARE = [
...,
'iommi.middleware',,
]
# 4) Build a page
from iommi import Table, Form, Page
class AlbumPage(Page):
class Meta:
title = 'Albums'
create_album = Form.create(auto__model=Album)
albums = Table(auto__model=Album)
# 5) Map it to a URL
urlpatterns = [
path('album/', AlbumPage().as_view(),
]