The autocomplete cannot use format to represent a field but if you store 
the representation in an computed field, you can use that for autocomplete.

On Saturday, 22 September 2012 22:23:51 UTC-5, alex wrote:
>
> Hi all, 
>
>  
>
> How to solve this:
>
>  
>
> There are two tables, table "xref" has two fields with a reference to 
> table "table". Look at the format of “table”.
>
>  
>
> db.define_table('table',
>
>     Field('name', type='string'),
>
>     Field('number', type='integer'),
>
>                 auth.signature,
>
>     *format*= lambda row: str(row.number) + ' (' +row.name + ')',   ## @1
>
>     migrate=settings.migrate)
>
>  
>
> db.define_table('xref',
>
>     Field('t1_ref', type='reference table',
>
>                                 widget = 
> SQLFORM.widgets.autocomplete(request, db.table.id, id_field=db.table.id)),
>
>     Field('t2_ref', type='reference table',
>
>                                 widget = 
> SQLFORM.widgets.autocomplete(request, db.table.id, id_field=db.table.id)),
>
>     auth.signature,
>
>     migrate=settings.migrate)
>
>                 
>
> Now if in the controller I define 
>
>                 form = crud.update(db.xref, record) to update one record 
> in xref, or 
>
>                 form = crud.create(db.xref) to create a new record in xref 
>
>  
>
> the autocomplete widget always returns the ids of the table "table", not 
> the required format (see @1).
>
>  
>
> The required format is shown correctly only with crud.read, or when in 
> crud.update the property writabe of the field is set to False, 
>
> for example as below:
>
>  
>
> def edit():
>
>                 record = db.xref(request.args(0))
>
>                 form = crud.update(db.xref, record)
>
>                 db.xref.t1_ref.writable = False
>
>                 return dict(form=form)
>
>  
>
> In this case the field t1_ref is represented correctly (as @1), the field 
> t2_ref shows an autocomplete widget with only ids of table.
>
>  
>
> How to make that the autcomplete widget shows always a list formatted as 
> in @1, and not just the ids of the referenced table?
>

-- 



Reply via email to