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