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 [email protected].
For more options, visit https://groups.google.com/d/optout.