Source code for dal_select2_taggit.widgets

"""Widgets for Select2 and django-taggit."""

from dal_select2.widgets import TagSelect2

from django import VERSION
from django.utils import six


[docs]class TaggitSelect2(TagSelect2): """Select2 tag widget for taggit's TagField."""
[docs] def render_options(self, *args): """Render only selected tags.""" selected_choices_arg = 1 if VERSION < (1, 10) else 0 selected_choices = args[selected_choices_arg] # When the data hasn't validated, we get the raw input here if isinstance(selected_choices, six.text_type): choices = [c.strip() for c in selected_choices.split(',')] else: # Filter out None values, not needed for autocomplete choices = [c.tag.name for c in selected_choices if c] options = [ '<option value="%s" selected="selected">%s</option>' % ( c, c) for c in choices ] return '\n'.join(options)