Skip to content

Instantly share code, notes, and snippets.

@grimmo
Last active August 29, 2015 14:15
Show Gist options
  • Save grimmo/4b5c5e60869c19546d39 to your computer and use it in GitHub Desktop.
Save grimmo/4b5c5e60869c19546d39 to your computer and use it in GitHub Desktop.
Example snippet to illustrate how to "hack" SQLFORM to update multiple tables in a single form
# Occorre una query per ottenere il record in tabella2 correlato al record in tabella1 che stiamo aggiornando
# questa qui sotto è solo un esempio
record_tabella2 = db(db.tabella2.id == id_del_record_in_tabella2)
# Creiamo il form principale tramite SQLFORM della tabella1
form = SQLFORM(db.tabella1,record_id,deletable=True,showid=True,compute=True)
# Costruiamo manualmente l'html del campo da aggiungere nella form
mio_campo_aggiuntivo = TR(LABEL('Campo aggiuntivo:'),TEXTAREA(_name='campo',value=tabella2.campo))
# Inseriamo il campo in posizione -1, ovvero sotto tutti gli altri campi
# attenzione che in questo modo il campo finira' sotto la spunta per l'eventuale cancellazione
form[0].insert(-1,mio_campo_aggiuntivo)
if form.process().accepted:
# Se viene cancellato il record in tabella1
# bisogna gestire la cancellazione del record correlato in db.tabella2
if form.vars.delete_this_record == 'on':
cancellazione_campo_aggiuntivo = db(db.tabella2.id == record_tabella2.id).delete()
else:
# Gestiamo l'aggiornamento del campo aggiuntivo
id_record_tabella2_aggiornato = db(db.tabella2.id == record_tabella2.id).validate_and_update(config=form.vars.config)
elif form.errors():
# blablabla
return dict(form=form)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment