Thanks!! Here's the generic version
def radio_h(field,value):
nbsp=XML(' ')
items=[TAG[''](SPAN(name,INPUT(_type='radio',
_id="%s_%s" % (field._tablename, field.name),
_value=key,
_name=field.name,
value=value,
requires=field.requires)
),nbsp,nbsp) for key,name in field.requires.options()]
return DIV(*items)
On Apr 11, 5:55 am, Massimo Di Pierro <[email protected]>
wrote:
> You pass the validator to the field so that it passes it to the
> widget. Your widget does not handle it. You can do:
>
> defradio_h(field,value):
> nbsp = XML(' ')
> items=[TAG['']
> (SPAN(name,INPUT(_type='radio',_value=key,_name=field.name,value=value,requ
> ires=IS_IN_DB(db,
> db.gender, '%(description)s',
> zero=None))),nb sp,nbsp)
> for key,name in field.requires.options()]
> return DIV(*items)
>
> define_table('t',
> Field('gender', 'reference gender',comment='*',widget=radio_h))
>
> On Apr 10, 4:46 pm, niknok <[email protected]> wrote:
>
>
>
>
>
>
>
> > Sorry for being a little thick but how do I do that? There's already a
> > IS_IN_DB requires in the table definition.
>
> > On Apr 11, 12: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:
>
> > > > defradio_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