165 |
165 |
166 def render(self, form, field): |
166 def render(self, form, field): |
167 name, curvalues, attrs = self._render_attrs(form, field) |
167 name, curvalues, attrs = self._render_attrs(form, field) |
168 options = [] |
168 options = [] |
169 for label, value in field.vocabulary(form): |
169 for label, value in field.vocabulary(form): |
170 if value in curvalues: |
170 if value is None: |
|
171 # handle separator |
|
172 options.append(u'<optgroup label="%s"/>' % (label or '')) |
|
173 elif value in curvalues: |
171 options.append(tags.option(label, value=value, selected='selected')) |
174 options.append(tags.option(label, value=value, selected='selected')) |
172 else: |
175 else: |
173 options.append(tags.option(label, value=value)) |
176 options.append(tags.option(label, value=value)) |
174 return tags.select(name=name, multiple=self.multiple, |
177 return tags.select(name=name, multiple=self.multiple, |
175 options=options, **attrs) |
178 options=options, **attrs) |