Django Autocomplete Light не работает при обновлении Django с Django 3.1 до 4.1

Приложение, которое я унаследовал, было на Django 2.2. Я постепенно обновился до 4.1 и все работает, кроме Django Autocomplete Light fields. Для некоторых форм.ModelForm у меня есть поле с правильным списком, который можно выбрать, но нет возможности набрать первые несколько букв и выбрать из этого отфильтрованного списка. Большинство полей автозаполнения находятся на forms.Form и либо отображают выпадающее поле, где единственный выбор - '-----', либо полосу прокрутки без списка, либо поле размером 2 x 47 пикселей.

Я просмотрел документацию DAL, но не смог найти решение. Я искал здесь и в других поисковых системах Google, но не нашел решения.

Я понимаю, что некоторые части кода используют старый шаблон URL, который включает ^, $ и ?P< элементы. Я пытался изменить их для одного из приложений, но это не решило проблему.

forms.py

# Forms
from django import forms
from django.forms import ModelForm

# Models
from login.models import User
from .models import Suggestion, SuggestionDecision, Implementation

# Autocomplete
from dal import autocomplete

class ReviewForm(forms.ModelForm):
    class Meta:
        model = Suggestion
        fields = ['suggestion', 'supervisors', 'managers']
        widgets = {
            'supervisors': autocomplete.ModelSelect2Multiple(url='login:user_autocomplete'),
            'managers': autocomplete.ModelSelect2Multiple(url='login:user_autocomplete')
        }

urls.py

from django.urls import path, re_path
from process_improvement import views as pi_views

app_name='process_improvement'

re_path(r'^autocomplete/suggestion/$', pi_views.SuggestionAutocomplete.as_view(), name='suggestion_autocomplete')

views.py

from dal import autocomplete
from django.urls import reverse
from django.shortcuts import  redirect
from django.contrib.auth.mixins import LoginRequiredMixin

class SuggestionAutocomplete(autocomplete.Select2QuerySetView, LoginRequiredMixin):
    def get_queryset(self):
        qs = Suggestion.objects.all()

        if self.q:
            for term in self.q.split():
                qs = qs.filter(Q(suggestion__icontains=term) | Q(pk__icontains=term) | Q(created_at__icontains=term))

        return qs
    

suggestion.html

                <form method="POST" class="needs-validation" id="suggestionForm" data-parsley-validate>
                    {% csrf_token %}
                    <label for="id_supervisors">Supervisors*</label>
                    {{ suggestionForm.supervisors }}
                    {{ suggestionForm.suggestion | as_crispy_field }}
                </form>

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

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