Thanks.  I suspected that would work but wasn't sure if there was a
solution through the SQLFORM class.  I'll do it this way though.

On Apr 6, 3:52 pm, DenesL <denes1...@yahoo.ca> wrote:
> Try setting the field's default instead:
>
> db.dog.owner.default = 10
>
> On Apr 6, 3:11 pm, zip <zip...@gmail.com> wrote:
>
>
>
>
>
>
>
> > I am using an AutocompleteWidget with and id_field set and would like
> > to prepopulate the data for this widget.
>
> > Say I have the following tables:
> > Person with id and name fields
> > Dog with id, name and owner fields
>
> > I have the following line to setup the widget for dog.owner:
> > db.dog.owner.widget = SQLFORM.widgets.autocomplete(request,
> > db.person.name, limitby=(0,5), auth=auth, min_length=2,
> > id_field=db.person.id)
>
> > My controller:
> >     form = SQLFORM(db.dog, fields=fields, formstyle='table3cols',
> > submit_button='Add', comments=False)
>
> >     form.vars.owner = 10
>
> >     form.accepts(request.vars, session)
>
> > The above sets the hidden field in the form to the proper owner
> > (person.id) but the visible input box is blank.  So I also added the
> > following line to try to get SQLFORM to put a value into the input box
> > and it did:
> >     form.vars._autocomplete_owner_aux = "Fred"
>
> > However, when I submit the form I get an error from SQLFORM.accepts()
> > because _autocomplete_owner_aux is not a field in the table dog.  The
> > error comes from the following line 1201 from sqlhtml.py, self.vars.id
> > = self.table.insert(**fields).  Shouldn't this call filter the fields
> > dictionary to remove any fields not in the table?  Is there a better
> > way of prepopulating the autocomplete widget?

Reply via email to