The less your models do, the better in general. When a page comes in, web2py does it's thing, then executes ALL models, then executes the appropriate controller->function, then the function executes the view.
However, with newer versions of web2py, there are conditional models, so in your models folder, you can have another folder with the name of your controller, so that models in that folder will only be executed when executing a controller. Controller functions should work the same way, with a folder for the function under the folder for the controller.

