Как использовать множественный select2 в форме django crispy?

У меня есть существующая хрустящая форма. Я хочу использовать django-select2 для замены существующего мультиселекта полем Select2 с максимальным количеством двух вариантов выбора. Я знаю из этого поста, что мне нужно включить 'data-maximum-selection-length' в качестве атрибута виджета.

Вот код поля, которое я добавляю:

forms.ModelMultipleChoiceField(
required=True, 
queryset=MyModel.objects.all(), 
widget=s2forms.Select2MultipleWidget(attrs={'data-maximum-selection-length': 2}))

Я включил {{ form.media.css }} в голову моего шаблона и {{ form.media.js }} перед тегом. Edit: Я включил path('select2/', include('django_select2.urls')), в мой urls.py.

Поле не отформатировано для отображения в виде выпадающего списка select2, оно выглядит как стандартное поле multiselect.

Вот что я надеюсь получить: enter image description here ... вот как это выглядит: enter image description here

Буду благодарен за любые идеи!

Ссылки:

Это не ответ на вышеупомянутый вопрос, но я включаю это в качестве альтернативного решения первоначальной проблемы, которую я реализовал.

По сути, я обошел проблему хрустящих форм, вставив нужное мне поле Select2 через HTML в виде набора полей.


model_ids = [str(ModelObject.id) for obj in ModelInput]
model_ids_string = "".join([f'<option value={model_id}>{model_id}</option>' for model_id in model_ids])

my_fieldset = Fieldset(
    f"""
       <div class="controls">
       <select id="field_name" name="field_name" required 
       class="js-states form-control" style="width:100;" multiple>
       {model_ids_string}
       </select>
       </div>""")
dyn_field_set.append(my_fieldset)

Я не собираюсь принимать этот ответ, если у кого-то есть реальное решение, которое все еще использует объект Select2 по назначению.

Вернуться на верх