I just raised Issue 1211 with more details. In short, keepvalues=True input seems to be ignored when used with onvalidation. but form.process(keepvalues=True) is ok.
Thanks,
Wen
def insert_numbers():
form = SQLFORM(db.numbers)
if form.process(keepvalues=True,onvalidation=my_form_processing).accepted:
session.flash = 'record inserted'
redirect(URL())
return dict(form=form)
--

