Last active
August 29, 2015 14:15
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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