You are right. it s widget problem. It is a bug. I will see what I can do but I could use some help on this one.
On Jan 10, 8:31 am, Jeff Bauer <[email protected]> wrote: > Yes, keepvalues=True is the default. My form is using the > checkbox widget, and it appears the values aren't retained > upon a form error. > > Field('inpatient_procedure', 'string', > widget=SQLFORM.widgets.checkboxes.widget, > > Hmmm, the database is updated, but the values aren't > displayed on the form even when they exist, so it's a widget > problem I suppose. For completeness: > > db.socdiag.inpatient_procedure.requires = IS_IN_SET([ \ > 'NA - Not applicable','UK - Unknown']) > > -Jeff > > On 01/10/2010 12:25 AM, mdipierro wrote: > > > That is the default. Are you telling me it is not? > > > On Jan 9, 11:44 pm, Thadeus Burgess<[email protected]> wrote: > >> like request.accept(keepvalues=True)... but only if there was an error. > > >> -Thadeus > > >> On Sat, Jan 9, 2010 at 11:32 PM, mdipierro<[email protected]> wrote: > >>> You can simplify your code > > >>> def diag_form(): > >>> form = SQLFORM(db.socdiag, request.args(0), deletable=True) > >>> if form.accepts(request.vars, session): > >>> response.flash = 'form accepted' > >>> elif form.errors: > >>> # (1) > >>> response.flash = 'form has errors' > >>> return dict(form=form) > > >>> I am not sure what you asked. Try insert in (1) > > >>> form.vars.update(request.vars) > > >>> OR > > >>> if form.record: form.vars.update(form.record.as_dict()) > > >>> OR > > >>> [form.vars[key]=db.socdiag[key].default for key in > >>> db.socdiag.fields] > > >>> Does of them solves your problem? > > >>> On Jan 9, 5:12 pm, Jeff Bauer<[email protected]> wrote: > >>>> I'm following another example in the manual using SQLFORM. > >>>> The code works as advertised. The only fly in the ointment > >>>> is when form.errors is True, the user's entry form no longer > >>>> displays her original values. I'm assuming there's a simple > >>>> way to pass the request vars back into form at line 11 > >>>> before return. > > >>>> 1 def diag_form(): > >>>> 2 if len(request.args): > >>>> 3 records = db(db.socdiag.id==request.args[0]).select() > >>>> 4 if len(request.args) and len(records): > >>>> 5 form = SQLFORM(db.socdiag, records[0], deletable=True) > >>>> 6 else: > >>>> 7 form = SQLFORM(db.socdiag) > >>>> 8 if form.accepts(request.vars, session): > >>>> 9 response.flash = 'form accepted' > >>>> 10 elif form.errors: > >>>> 11 response.flash = 'form has errors' > >>>> 12 return dict(form=form) > > >>>> Jeff Bauer > >>>> Rubicon, Inc. > > >>> -- > >>> You received this message because you are subscribed to the Google Groups > >>> "web2py-users" group. > >>> To post to this group, send email to [email protected]. > >>> To unsubscribe from this group, send email to > >>> [email protected]. > >>> For more options, visit this group > >>> athttp://groups.google.com/group/web2py?hl=en. > >
-- You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/web2py?hl=en.

