Hi there,

I bought the web2py .pdf, and have been reading it, but I'm struggling
a little bit with:

http://www.web2py.com/book/default/chapter/07#SQLFORM

Specifically the section "SQLFORM without database IO"

I have 2 fields, lon & lat I'd like to calculated from a postcode and
enter into the database. I want this to happen automatically, I don't
want the user to see them in the form.

As you can see below, I've done this by setting dbio=False, computing
the fields from the postcode value then adding them to the forms.var
dict before submitting it all together. Is this a rational way to
accomplish my requirements?

Thanks in advance!

Chris

def adddata():
    form=SQLFORM(db.data, fields=['provider', 'speed', 'postcode', 'ping'])
    if form.accepts(request.vars, session, dbio=False): #<-- dbio
false means it doesn't submit till we ask it to
       geocoded=__geocode(form.vars.postcode) #<-- so compute the other fields
       #add some computed values to the form.vars dictionary for submission
       form.vars['lon']=geocoded['lon']
       form.vars['lat']=geocoded['lat']
       #and insert the data into the database
       db.data.insert(**dict(form.vars))
       #response.flash puts the flash in this page, session.flash in
the next page of the session
       session.flash = 'form accepted'
       redirect(URL(r=request, f='index'))
    elif form.errors:
       response.flash = 'form has errors'
    return dict(form=form)

Reply via email to