I found the answer searching through the group posts: form.element(_name='email')['_readonly']=True
although this doesn't seem to be documented in the manual, and even looking through the gluon directory (and grepping for _readonly ) didn't reveal anything. Would this have been obvious to someone more proficient with web2py (I've only been using it for about a month)? thx! Luis.