As the book shows, you should use:

db.table.insert(**db.table._filter_fields(form.vars))

Anthony

On Tuesday, September 23, 2014 5:10:48 AM UTC-4, Andy Joel wrote:
>
> I have a very simple form processing page in my controller:
>
> def new():
>     form = SQLFORM.factory(
>         Field('f_name', label='Your name', requires=IS_NOT_EMPTY()),
>         )
>     if form.process().accepted:
>         db.table.insert(**form.vars)
>         response.flash = 'form accepted'
>     elif form.errors:
>         response.flash = 'form has errors'
>     else:
>         response.flash = 'please fill the form'
>     return dict(form=form)
>
> If I leave the form blank, it says there are errors, I fill it in, it says 
> the form is accepted. But it fails to update the database, giving this 
> error:
>
> <class 'psycopg2.IntegrityError'> null value in column "id" violates 
> not-null constraint DETAIL: Failing row contains (null, Boris, T, 
> 2014-09-23 10:03:30, 11, 2014-09-23 10:03:30, 11). 
> What is curious is that I have used this successfully to populate the 
> table:
> db.table.insert(f_name='Mary')
>
> I am guessing form.vars includes a value for ID, and Web2Py is trying to 
> write this to the database (postgreSQL by the way), rather than allowing 
> the database to assign a value, and so the database objects.
>
> Looks like it may be a bug, but I may well be missing something.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to