I apologize for the late reply: form.vars.id = db.user_jogo.insert(**dict(form.vars))
should have been: form.vars.id = db.user_jogo.insert(**db.user_jogo._filter_fields(form.vars)) The _filter_fields will remove from the form.vars those fields that do not belong there (for example hidden fields used by autocomplete). On Sep 1, 9:56 am, Tito Garrido <[email protected]> wrote: > nobody? > > On Mon, Aug 30, 2010 at 12:02 AM, Tito Garrido <[email protected]>wrote: > > > > > Hi Folks, > > > I'm trying to validade a form before sending it. There is a hidden field > > and an autocomplete field on the form and there is what I get: > > > % repr(invalid_fieldnames) > > SyntaxError: invalid field names: ['_autocomplete_nome_aux'] > > > *Function argument list: (self=<Table {'ALL': <gluon.sql.SQLALL object at > > 0x102..., 'id': <gluon.sql.Field object at 0x10245de90>}>, > > **fields={'_autocomplete_nome_aux': 'God Of War III', 'jogo': '2', 'user': > > 1})* > > > 1976. > > 1977. > > 1978. > > 1979. > > 1980. > > 1981. > > > 1982. > > 1983. > > 1984. > > 1985. > > > def _insert(self, **fields): > > > (fs, vs) = ([], []) > > invalid_fieldnames = [key for key in fields if not key in > > self.fields] > > > if invalid_fieldnames: > > raise SyntaxError, 'invalid field names: %s' \ > > > % repr(invalid_fieldnames) > > > for fieldname in self.fields: > > > if fieldname == 'id': > > > continue > > field = self[fieldname] > > > - invalid_fieldnames: ['_autocomplete_nome_aux'] > > - builtinrepr: <built-in function repr> > > > *This is the CONTROLLER:* > > > @auth.requires_login() > > def meus_jogos(): > > > form=SQLFORM > > <http://127.0.0.1:8000/examples/global/vars/SQLFORM>(db.user_jogo,fields=['jogo'],submit_button='Adicionar') > > > row_jogos=db(db.user_jogo.user==auth.user.id).select() > > > jogos_cadastrados=[] > > for jogo in row_jogos: > > > jogos_cadastrados.append(jogo.jogo.id) > > > form.vars.user=auth.user.id > > > if form.accepts(request > > <http://127.0.0.1:8000/examples/global/vars/request>.vars, session > > <http://127.0.0.1:8000/examples/global/vars/session>,dbio=False): > > > if int(form.vars.jogo) not in jogos_cadastrados: > > > form.vars.id = db.user_jogo.insert(**dict(form.vars)) > > > response > > <http://127.0.0.1:8000/examples/global/vars/response>.flash = 'Jogo > > Adicionado' > > > else: > > response > > <http://127.0.0.1:8000/examples/global/vars/response>.flash = 'Você já tem > > esse jogo cadastrado' > > > elif form.errors: > > response > > <http://127.0.0.1:8000/examples/global/vars/response>.flash = 'Existem > > erros no formulário' > > > return dict(row_jogos=row_jogos,form=form) > > > Am I missing something or is it a bug? > > > Regards, > > > Tito > > > -- > > > Linux User #387870 > > .........____ > > .... _/_õ|__| > > ..º[ .-.___.-._| . . . . > > .__( o)__( o).:_______ > > -- > > Linux User #387870 > .........____ > .... _/_õ|__| > ..º[ .-.___.-._| . . . . > .__( o)__( o).:_______

