Got the solution myself. The right code is:
form.custom.widget['myfield']['_checked'] = db((db.mytable.id==id).select(db.mytable.myfield).first() #updated form.custom.widget['myfield']._postprocessing() On 6 Feb., 17:55, Serbitar <[email protected]> wrote: > I can do something like this: > > fields = [Field('myfield', type = integer, default = > db((db.mytable.id==id).select(db.mytable.myfield).first()] > form=SQLFORM.factory( *fields) > > if form.accepts(request.vars, session): > db(db.mytable.id==id).update(myfield=form.vars[entry]) > > form.custom.widget['myfield']['value'] = > db((db.mytable.id==id).select(db.mytable.myfield).first() #updated > value > form.custom.widget['myfield']._postprocessing() > > intention: > I can make a custom form that updates several databases/field > combinations, but I want to instantly show these changes in the form > and thus have to update the form values. Otherwise I will continually > alternate the changes between database and form. > > this works as intended. > > BUT: > > If I want to do the same thing with "boolean" datatypes (and > checkboxes in the form) this does not work. > > I tried: > > form.custom.widget['myfield']['value'] = > db((db.mytable.id==id).select(db.mytable.myfield).first() #updated > value > form.custom.widget['myfield']._postprocessing() > > form.custom.widget['myfield']['value'] = True > form.custom.widget['myfield']._postprocessing() > > form.custom.widget['myfield']['checkbox'] = "checked" > form.custom.widget['myfield']._postprocessing() > > and such, but It never shows and I get the "alternating" behaviour > (either form or database is updated but never both at the same time). > > Question: How do I change theform.custom.widgetvalues of checkbox > widgets ?

