widgets.py 715 B

1234567891011121314151617
  1. from django import forms
  2. class ListTextWidget(forms.TextInput):
  3. def __init__(self, data_list, name, *args, **kwargs):
  4. super(ListTextWidget, self).__init__(*args, **kwargs)
  5. self._name = name
  6. self._list = data_list
  7. self.attrs.update({'list': 'list__{}'.format(self._name)})
  8. def render(self, name, value, attrs=None, renderer=None):
  9. text_html = super(ListTextWidget, self).render(name, value, attrs=attrs)
  10. data_list = '<datalist id="list__{}">'.format(self._name)
  11. for item in self._list:
  12. data_list += '<option value="{}">{}</option>'.format(item[0], item[1])
  13. data_list += '</datalist>'
  14. return text_html + data_list