Я использую django-autocomplete-light с django-taggit. Интеграция очень проста, если вы будете следовать документации:
import autocomplete_light
from taggit.models import Tag
autocomplete_light.register(Tag)
а также
class NewActivityForm(forms.ModelForm):
tags = TagField(widget=TagWidget('TagAutocomplete'))
[...]
Это создает красивый виджет в стиле встроенного стиля, где вы печатаете, и вы видите список автозаполнения ниже — все в порядке.
Однако мои теги имеют цветовую кодировку, поэтому мне нужно настроить две вещи:
а) Во-первых, в списке автозаполнения мне нужно настроить класс css для каждого тега. Я получаю некоторый контроль над шаблоном, но кажется, что есть селекторы css, которые ищут [значение данных], которые переопределяют мои классы. Код для autocomplete_template_html:
<div>
{% for choice in choices %}
<span class="tag tag--{{choice.pk}}" data-value="{{choice.pk}}" >{{choice}}</span>
{% endfor %}
</div>
б) Во-вторых, после того, как тег выбран и добавлен к моему входу, мне нужно сохранить этот класс css, чтобы я получил собственный вид. Когда я вижу сгенерированные DOM-элементы, я вижу, что там есть скрытые промежутки, которые я мог бы использовать, но не ясно, как это сделать.
Как я могу это сделать? Должен ли я написать свой собственный виджет или есть что-то, что я могу подклассировать?