Vincenzo,
Does it still blow up if you comment out these three lines?
id =
db.users_categories.insert(**db.user_categories._filter_fields(perm_form.va
rs))
id =
db.users_dictionaries.insert(**db.user_dictionaries._filter_fields(perm_for
m.vars))
response.flash='Thanks for filling the form'
On Dec 7, 6:08 pm, Vincenzo Ampolo <[email protected]> wrote:
> Hi all
>
> I'm new to web2py. I set up a many to many relationship like these ones:
>
> db.define_table('users_dictionaries',
>
> Field('user_id', db.auth_user, requires =
> IS_IN_DB(db,'auth_user.id', db.auth_user._format)),
>
> Field('dictionary_id', db.dictionary,
> requires=IS_IN_DB(db,'dictionary.id',db.dictionary._format,multiple=True)),
>
> )
>
> db.define_table('users_categories',
>
> Field('user_id', db.auth_user, requires =
> IS_IN_DB(db,'auth_user.id', db.auth_user._format)),
>
> Field('category_id', db.category,
> requires=IS_IN_DB(db,'category.id',db.category._format,multiple=True))
>
> )
>
> in the controller i'm doing:
>
> perm_form=SQLFORM.factory(db.users_categories,db.users_dictionaries)
> if perm_form.process().accepted:
> form.vars.user=auth_user.id
> id =
> db.users_categories.insert(**db.user_categories._filter_fields(perm_form.va
> rs))
> id =
> db.users_dictionaries.insert(**db.user_dictionaries._filter_fields(perm_for
> m.vars))
> response.flash='Thanks for filling the form'
>
> It's displayed correctly: combo for the user, multiple select for
> user_categories and user_dictionaries but when i try to select a user,
> some or one category and some or one dictionary and i press submit i get
> this error:
>
> Traceback(most recent call last):
> File"/var/www/argomenti.in/web2py/gluon/restricted.py",line194,inrestricted
> execccodeinenvironment
>
> File"/var/www/argomenti.in/web2py/applications/webkeywords2/controllers/adm
> in.py"
> <http://localhost:8000/admin/default/edit/webkeywords2/controllers/adm...>,line20,in<module>
> File"/var/www/argomenti.in/web2py/gluon/globals.py",line149,in<lambda>
> self._caller=lambdaf:f()
>
> File"/var/www/argomenti.in/web2py/applications/webkeywords2/controllers/adm
> in.py"
> <http://localhost:8000/admin/default/edit/webkeywords2/controllers/adm...>,line9,inindex
> ifperm_form.process().accepted:
> File"/var/www/argomenti.in/web2py/gluon/html.py",line1950,inprocess
> self.validate(**kwargs)
> File"/var/www/argomenti.in/web2py/gluon/html.py",line1898,invalidate
> if self.accepts(**kwargs):
> File"/var/www/argomenti.in/web2py/gluon/sqlhtml.py",line1219,inaccepts
> fields[fieldname] =safe_int(value)
> File"/var/www/argomenti.in/web2py/gluon/sqlhtml.py",line48,insafe_int
> returnint(x)
> TypeError:int()argument must be a stringora number,not'list'
>
> How can i fix it? is that multiple=True of my tables that triggers the
> problem?
>
> Thanks
>
> --
> Vincenzo Ampolohttp://vincenzo-ampolo.nethttp://goshawknest.wordpress.com