Denes is right... one caveat... the requires must be passed not just to the Field but ALSO to the INPUT inside the widget.
On Apr 10, 11:51 am, DenesL <[email protected]> wrote: > You forgot to set the requires for t.gender > > On Apr 9, 6:35 pm, niknok <[email protected]> wrote: > > > > > > > > > I got this custom widget from the list: > > > def radio_h(field,value): > > nbsp = XML(' ') > > items=[TAG[''] > > (SPAN(name,INPUT(_type='radio',_value=key,_name=field.name,value=value)),nb > > sp,nbsp) > > for key,name in field.requires.options()] > > return DIV(*items) > > > In my controller: > > define_table('t', > > Field('gender', 'reference gender',comment='*',widget=radio_h)) > > db.person.gender.requires=IS_IN_DB(db, db.gender, '%(description)s', > > zero=None) > > > If I don't use the custom widget, the form will only validate if the > > user picks an answer for the gender field. If I use the custom widget, > > the form will validate even if there's no selected answer in the gender > > field. And then it will assign the first record in db.gender to the > > record, even if that wasn't selected at all. > > > I think that assigning a default value in this case is not appropriate. > > So, how do I make this custom widget validate properly? > > > /r > > Nik

