私はdjango-taggitでdjango-autocomplete-lightを使用しています。ドキュメントに従えば、統合は非常に簡単です。
import autocomplete_light
from taggit.models import Tag
autocomplete_light.register(Tag)
と
class NewActivityForm(forms.ModelForm):
tags = TagField(widget=TagWidget('TagAutocomplete'))
[...]
これにより、適切なインライン スタイルのウィジェットがレンダリングされます。入力すると、以下のオートコンプリート リストが表示されます。すべて問題ありません。
ただし、私のタグは色分けされているため、2 つのことをカスタマイズする必要があります。
a) まず、オートコンプリート リストで、各タグの css クラスをカスタマイズする必要があります。テンプレートをある程度制御できますが、クラスをオーバーライドする [data-value] を探している css セレクターがあるようです。autocomplete_template_html のコードは次のとおりです。
<div>
{% for choice in choices %}
<span class="tag tag--{{choice.pk}}" data-value="{{choice.pk}}" >{{choice}}</span>
{% endfor %}
</div>
b) 2 番目に、タグを選択して入力に追加したら、そこにその CSS クラスを維持して、カスタムの外観を得る必要があります。生成された DOM 要素を見ると、おそらく使用できる隠しスパンがいくつかあることがわかりますが、その方法は明確ではありません。
これどうやってするの?独自のウィジェットを作成する必要がありますか、それともサブクラス化できるものはありますか?