You need to make your widget a class so you can pass args to it in the
constructor:

class Units_Widget(object):
    def __init__(**args):
        def widget(f,v):
           #build your widget
           #using args
        return widget

db.ate.units.widget = Units_Widget(food_id)


On Mar 27, 10:42 am, Avik Basu <avikb...@gmail.com> wrote:
> So, for my example, I tried your suggestion.  I defined a widget in
> models/widgets.py:
>
> def units_widget(field,value,food_id):
>    ...
>
> and then in the controller, I set the widget with:
>
> db.ate.units.widget = units_widget(food_id)
>
> But here I am not passing field and value so I get an error.  What
> would be the proper way to call the widget constructor?
>
> Avik
>
> On Mar 27, 12:02 am, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > in the controller you can do
>
> > db.table.field.widget = SomeWidgetConstructor(args)
>
> > Not sure if this is what you are asking.
>
> > On 26 Mar, 18:26, Avik Basu <avikb...@gmail.com> wrote:
>
> > > Is there a way to pass arguments to a field's widget from the
> > > controller?  For example:
>
> > > db.define_table("food", Field("name", "string'"))
>
> > > db.define_table("units",
> > >    Field("food_id", db.food),
> > >    Field("name", "string")
> > > )
>
> > > db.define_table("ate",
> > >    Field("food_id", db.food),
> > >    Field("quantity", "double"),
> > >    Field("units", "string", widget=units_widget),
> > > )
>
> > > In an update form for "ate", I would like to create a dropdown box of
> > > units that are associated with a given food_id.  I realize could not
> > > be set in the db.py since the food id would be unknown in that scope,
> > > however the action in the controller would have access to the food id,
> > > but I would like to be able to pass that somehow to the widget.
>
> > > Thanks,
> > > Avik
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web...@googlegroups.com.
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en.

Reply via email to