Metadata

Distro Index Owner:
eea
Home Page:
z3c.formwidget.optgroup
License
ZPL 2.1
Version:
1.3rc1
Last updated:
2020-02-14
Keywords:
zope zope3 z3c.form

z3c.formwidget.optgroup

Files

Indexes

An optgroup widget for z3c.form.

Introduction

This package implements a widget that groups select values into optgroups.

Usage

Imagine you have the following schema:

class IMySchema(Interface):
    country = schema.Choice(
        required=True,
        title=u"Country",
        vocabulary='countries',
    )

    subdivision = schema.Choice(
        required=True,
        title=u"State",
        vocabulary='subdivisions',
    )

    region = schema.Choice(
        required=True,
        title=u"County",
        vocabulary='regions',
    )

When you create your vocabularies (e.g. using SimpleVocabulary), instead of adding SimpleTerm items:

...
for country in pycountry.countries:
    terms.append(SimpleTerm(value=country.alpha2, token=country.alpha2,
                            title=country.name))
...

you add OptgroupTerm items:

from z3c.formwidget.optgroup.widget import OptgroupTerm

...
country_list = countries(context)
for item in pycountry.subdivisions:
    parent = country_list.getTermByToken(item.country_code).title
    terms.append(OptgroupTerm(value=item.code, token=item.code,
                              title=item.name, optgroup=parent))
...

In your form, simply assign the OptgroupFieldWidget:

from z3c.formwidget.optgroup.widget import OptgroupFieldWidget

class MyForm(form.Form):
    fields = field.Fields(IMySchema)

    fields['subdivision'].widgetFactory = OptgroupFieldWidget
    fields['region'].widgetFactory = OptgroupFieldWidget

Contributors

Contributors

System Message: WARNING/2 (<string>, line 74)

Bullet list ends without a blank line; unexpected unindent.

Changelog

1.3.rc1 (2020-02-14)

  • add Python3 support [1letter]

1.2 (2012-05-01)

  • Fixed wrong html tag for display mode template. [Thomas Massmann]

1.1 (2012-04-26)

  • Always show no value message as first item. [Thomas Massmann]

1.0.1 (2012-04-14)

  • MANIFEST.in was missing some entries. [Thomas Massmann]

1.0 (2012-04-14)

  • Initial release. [Thomas Massmann]