Как использовать select2 в django?

Имеется две модели, а именно модели "Computer" и "ASKstatus". Они объедены отношением "один ко многим", поле "comps_to_work" является ключом модели "ASKstatus". Для пользователя отображается форма заполнения рабочего места (за это отвечает модель и форма "ASKstatus"). При нажатии на поле номер компьютера, должен выпадать список со всеми номерами компьютеров созданными с помощью модели "Computer", а также появится поле поиска для быстрого и удобного нахождения нужного компа. Я узнал о существовании библиотеке select2, но не могу её настроить, чтобы форма корректно отображалась пользователю, пожалуйста, поясните как это сделать, или как вы настраивали её у себя (в документацию библиотеки смотрел, не смог понять в чём у меня ошибка). models.py:

class Computer(models.Model):
    CHOICES = [
        ('Да', 'Да'),
        ('Нет', 'Нет'),
    ]
    number = models.CharField('Номер компьютера', max_length=6, blank=True)
    CPU = models.CharField('Процессор', max_length=50, blank=True)
    RAM = models.TextField('Оперативная память', max_length=200, blank=True)
    Power_unit = models.CharField('Блок питания', max_length=50, blank=True)
    Mother_board = models.CharField('Материнская плата', max_length=100, blank=True)
    PCI_slot = models.CharField('PCI слот', max_length=3, blank=True, choices=CHOICES)
    PCI_express_slot = models.CharField('PCI express слот', max_length=3, blank=True, choices=CHOICES)
    ISA_port = models.CharField('ISA порт', max_length=3, blank=True, choices=CHOICES)
    LPT_port = models.CharField('LPT порт/параллельный порт', max_length=3, blank=True, choices=CHOICES)
    COM_port = models.CharField('COM порт/последовательный порт', max_length=3, blank=True, choices=CHOICES)
    Data_storage_device = models.CharField('Устройство хранения данных', max_length=100, blank=True)
    video_card = models.CharField('Видеокарта', max_length=100, blank=True)
    object_place = models.CharField('Место положения', max_length=200, blank=True)
    object_work = models.CharField('Рабочее место', max_length=200, blank=True, null=True)

    def __str__(self):
        return f'{self.number}'

    class Meta:
        verbose_name = 'Компьютер'
        verbose_name_plural = 'Компьютеры'

class ASKstatus(models.Model):
    number = models.CharField('№ п/п', max_length=10, blank=True)
    ASK_number = models.CharField('№ АСК',max_length=10, blank=True)
    name = models.CharField('Название', max_length=100, blank=True)
    product_name = models.CharField('Изделие', max_length=100, blank=True)
    note = models.CharField('Примечание', max_length=100, blank=True)
    comps_to_work = models.ForignKey('Computer', on_delete=models.SET_NULL, null=True, blank=True)

    class Meta:
        verbose_name = 'Статус'
        verbose_name_plural = 'Статусы'

forms.py:

from django import forms
from django.forms import ModelForm, TextInput
from django_select2.forms import Select2Widget
from .models import Computer, ASKstatus, POstatus, ListEquipment, AskTypes

class StatusForm(ModelForm):
    class Meta:
        model = ASKstatus
        fields = ["number", "ASK_number", "name", "product_name", "note", "comps_to_work"]
        widgets = {
            "number": TextInput(attrs={
                'class': 'form-control',
                'placeholder': '№ п/п'

            }),

            "ASK_number": TextInput(attrs={
                'class': 'form-control',
                'placeholder': '№ АСК'

            }),

            "name": TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'Название'
            }),

            "product_name": TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'Изделие'
            }),

            "note": TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'Примечание'
            }),

            "comps_to_work": forms.Select(attrs={
                'class': Select2Widget
            })
        }

HTML представление:

<!doctype html>
{% extends 'base_comp/base.html'%}

{% block content %}
<html lang="ru">
<p></p>
<form method="post" class="form-group col-md-4" style="margin-top: 20px">
    <div class="row">
        <div class="col">
            {{ form.number }}<br>
            {{ form.ASK_number }}<br>
            {{ form.name }}<br>
        </div>
        <div class="col" >
            {{ form.product_name }}<br>
            {{ form.note }}<br>
            {{ form.comps_to_work }}<br>
        </div>
        {% csrf_token %}
        <span>{{error}}</span>
    </div>
    <button type="submit" class="btn btn-success">Добавить</button>
</form>
</html>
{% endblock %}

views.py:

def add_ASK(request):
    error = ''
    if request.method == 'POST':
        form = StatusForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('/index_S')
        else:
            error = 'Неверная форма данных'

    form = StatusForm()
    context = {
        'form': form,
        'error': error
    }
    return render(request, "base_comp/add_ASK.html", context)

Ответы (0 шт):