And that's clear to me right now, Thank You :) ! Regards, brushek
On 31 Sie, 02:22, Anthony <abasta...@gmail.com> wrote: > On Tuesday, August 30, 2011 6:42:20 PM UTC-4, brushek wrote: > > > On 31 Sie, 00:03, Bruno Rocha <rocha...@gmail.com> wrote: > > > as far as I know, this line "db.dog.owner.requires=IS_IN_DB(db, ' > > person.id')" > > > is responsible for the dropdown widget. > > > > It is a validator, but using it implies the use of widget. > > > > if you do not use the IS_IN_DB(..) you will have no widget, then will be > > > only a text box field to input the id. > > > Hm... So You suggests, that if I remove the line > > db.dog.owner.requires=IS_IN_DB(db, 'person.id') I should get > > in form generated by SQLFORM text box ? If so, then something is > > wrong, because I get the select box with numbers (id's from person > > table). > > Because db.dog.owner is a reference field, it automatically gets the > following validator by default: > > db.dog.owner.requires=IS_IN_DB(db, 'person.id', db.person._format) > > So, by default, it uses db.person._format (which in this case is > '%(name)s'), which displays the names instead of the ids. However, you have > overridden the default validator with your own IS_IN_DB, but you did not > specify a format. If you don't specify a format in IS_IN_DB, it defaults to > '%(id)s', which is why you see ids instead of names. > > Anthony