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('&nbsp;')
>     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('&nbsp;')
> > > >     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

Reply via email to