class CategoryWidget(forms.CheckboxSelectMultiple):
def render(self, name, value, attrs=None, choices=()):
final_attrs = self.build_attrs(attrs, name=name)
output = [u'<ul>']
print 1, locals()
def render_list(choices):
print 2, locals()
for i, (option_value, option_label, children) in enumerate(choices):
final_attrs = dict(final_attrs, id='%s_%s' % (attrs['id'], i))
label_for = u' for="%s"' % final_attrs['id']
cb = forms.CheckboxInput(final_attrs, check_test=lambda value: value in str_values)
option_value = force_unicode(option_value)
rendered_cb = cb.render(name, option_value)
option_label = conditional_escape(force_unicode(option_label))
output.append(u'<li><label%s>%s %s</label></li>' % (label_for, rendered_cb, option_label))
render_list(chain(self.choices, choices))
output.append(u'</ul>')
return mark_safe(u'\n'.join(output))
1 {'name': ‘sectors’, ‘self’: <zondir.base.forms.CategoryWidget object at 0x91512cc>, ‘value’: None, ‘choices’: (), ‘attrs’: {'id': u'id_sectors'}, ‘output’: , ‘final_attrs’: {'name': ‘sectors’, ‘id’: u'id_sectors'}}
2 {'output': , ‘attrs’: {'id': u'id_sectors'}, ‘name’: ‘sectors’, ‘choices’: <itertools.chain object at 0x91d9ccc>}
Почему внутри вложенной функции доступно output, но недоступно final_attrs?