class PrependWidget(Widget): u""" Widget that prepend boostrap-style span with data to specified base widget """ def __init__(self, base_widget, data, *args, **kwargs): u"""Initialise widget and get base instance""" super(PrependWidget, self).__init__(*args, **kwargs) self.base_widget = base_widget(*args, **kwargs) self.data = data def render(self, name, value, attrs=None): u"""Render base widget and add bootstrap spans""" field = self.base_widget.render(name, value, attrs) return mark_safe(( u'<div class="input-prepend">' u' <span class="add-on">%(data)s</span>%(field)s' u'</div>' ) % {'field': field, 'data': self.data})