You can either assign a callable to options that returns an update to
date list of items or pass them in at display time. To use a callable
do something like this:
#Define the callable somewhere
def get_item_list():
return [(item.id, item.name) for item in
model.Item.select(model.Item.q.active == True, orderBy='name')]
#Define the items like this
items = widgets.CheckBoxList(validator=validators.Int(), options=get_item_list)
-Ian
On 2/23/07, Carlos Hanson <[EMAIL PROTECTED]> wrote:
>
> Greetings,
>
> I have created a couple widgets: ItemFields and MenuFields. Both
> extend WidgetsList. I use both in a TableForm. The ItemFields are
> used to create an Item, while the MenuFields are used to create a
> Menu. In my MenuFields class, I select all the Items
> (model.Item.select()) and use the results to populate a CheckBoxList.
>
> The problem I have is after adding a new Item, it does not show in the
> TableForm made from the MenuFields. How do I ensure the CheckBoxList
> in my MenuFields is always up to date.
>
> Thanks in advance. My code follows:
>
> class ItemFields(widgets.WidgetsList):
> """Form fields for creating an Item."""
>
> name = widgets.TextField(validator=validators.NotEmpty())
> active = widgets.CheckBox(attrs=dict(checked=True),
> help_text='If unchecked, it is unavailable to new menus.')
>
> class MenuFields(widgets.WidgetsList):
> """Form fields for creating a Menu."""
>
> item_list = []
> all_items = model.Item.select(model.Item.q.active == True,
> orderBy='name')
> for item in list(all_items):
> item_list.append((item.id, item.name))
>
> date = widgets.CalendarDatePicker("date")
> items = widgets.CheckBoxList(validator=validators.Int(),
> options=item_list)
>
> item_form = widgets.TableForm(
> fields=ItemFields(), action='save', submit_text='Add Item')
> menu_form = widgets.TableForm(
> fields=MenuFields(), action='save', submit_text='Add Menu')
>
> class Menu(controllers.Controller):
> @expose(template='.templates.add')
> def add(self, tg_errors=None):
> """Show the Menu form."""
>
> if tg_errors:
> flash('There was a problem with the form!')
> return dict(form=menu_form)
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---