This is my code for the another table (it has the same situation, but without using a SQLFORM.factory). I posted this instead of the SQLFORM.factory, because it is simpler code.
My index function contains the grid grid = SQLFORM.grid( query, csv=False, deletable=False, details=False, links=[ lambda row: A( SPAN(T('Delete'), _class='buttontext button', _title= 'Delete'), _href=URL('get_approval', args=[row.id], user_signature= True), _class='button btn btn-default btn-secondary', ), ], onvalidation=on_validation, # Form only. orderby=db.client.name, paginate=session.auth.user.pagination, # represent_none='', # Grid and view form only. ) if 'edit' in request.args: form = grid.update_form form['hidden'].update(modified_on=form.record.modified_on) My onvalidation function if request.args and request.args[0] == 'new': # Fix for SQLite instead of for_update=True. When for_update is # fixed for SQLite, only the first SELECT in the function should # have for_update=True. while True: try: # SQLite only does database lock. db.executesql('BEGIN IMMEDIATE TRANSACTION') break except sqlite3.OperationalError: sleep(0.5) elif not db.client(request.vars.id).is_active: session.flash = T('Record was deleted while you were editing.') redirect(URL('index', user_signature=True)) elif request.post_vars.modified_on != str(db.client(request.vars.id). modified_on): form.errors.code = T('Record was changed while you were editing. ' 'Press F5 to refresh and press Resend in the ' 'browser question.') elif form.vars.delete_this_record: # Fix for SQLite instead of for_update=True. When for_update is # fixed for SQLite, only the first SELECT in the function should # have for_update=True. while True: try: # SQLite only does database lock. db.executesql('BEGIN IMMEDIATE TRANSACTION') break except sqlite3.OperationalError: sleep(0.5) db.client(request.vars.id).update_record( cancel_approved_by=auth.user_id, canceled_by=auth.user_id, canceled_on=request.now, is_active=False, ) db.commit() session.flash = T('Done.') redirect(URL(user_signature=True)) elif request.args and request.args[0] == 'edit': # Fix for SQLite instead of for_update=True. When for_update is # fixed for SQLite, only the first SELECT in the function should # have for_update=True. while True: try: # SQLite only does database lock. db.executesql('BEGIN IMMEDIATE TRANSACTION') break except sqlite3.OperationalError: sleep(0.5) quarta-feira, 27 de Março de 2019 às 18:47:33 UTC, Anthony escreveu: > > Need to see your code. > > On Wednesday, March 27, 2019 at 2:47:01 PM UTC-4, João Matos wrote: >> >> You mean to update the editing form with the new values from the record >> on the db without telling the user to press F5? >> How can I do it? >> >> Thanks. >> > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.