On acceptance (accepts==True) the SQLFORM form would do the insert for you. This explains your duplicate record.
With FORM you would have to do your own insert inside the acceptance test. form=FORM(...) if form.accepts(...): #insert record here On Feb 24, 8:49 am, mdmcginn <michael.d.mcgin...@gmail.com> wrote: > This form inserts two records, the first containing only the submitted > data ('choice') and the second containing the poll and voter ids as > well. I only need the second one. What should I do differently? Sorry, > I'm sure the solution is obvious to everyone but me! > > Controller: > def respond(): > p = db.poll[request.args(0)] > if not p: raise HTTP(404) > form = SQLFORM(db.choice, fields = ['choice']) > if form.accepts(request.vars): > response.flash='record inserted' > > db.choice.insert(voter=auth.user.id,poll=p.id,choice=request.vars.choice) > elif form.errors: > response.flash='there are errors, they are shown in form' > return dict(form=form,poll=p) > > View:: > {{extend 'layout.html'}} > <div id="main"> > <h3>Q: {{= poll.question}}</h3> > {{= form}} > </div> > > I tried using FORM instead of SQLFORM but that inserted everything but > 'choice'. -- You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web...@googlegroups.com. To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/web2py?hl=en.