There might have been some confusion. You don't have to break your form or pages into multiple steps. But you can break the code in your controller into different steps. One controller can work with multiple tables.
You can do stuff like: form_car = SQLFORM(db.car) form_customer = SQLFORM(db.customer) if form_car.accepts(request.vars, session, dbio=False): if form_customer.accepts(request.vars, session, dbio=False): do something return dict(form_car=form_car, form_customer=form_customer) You might need to use dbio=False so that Web2py doesn't automatically update the database. This can all be done on one web page.