Я пытаюсь добавить автозаполнение в поле страны на нашей модели. Автозаполнение заполняется при добавлении этого кода:
# form.py
class CustomUserChangeForm(UserChangeForm):
country = autocomplete.Select2ListCreateChoiceField(
choice_list=get_user_model().get_country_choice_list,
# widget=autocomplete.ListSelect2(url='http://127.0.0.1:8000/accounts/country-list-autocomplete',),
)
class Meta:
model = CustomUser
fields = ('first_name', 'last_name', 'company', 'country')
но когда я разлагаю строку виджета, поле отображается в раскрывающемся списке как пустое, и оно совсем не похоже на входные данные - скорее, на раскрывающийся список.
get_user_model().get_country_choice_list
возвращает список, как и ожидалось: ['Afghanistan', 'Åland Islands', 'Albania', 'Algeria'...
Моя конечная точка работает правильно (при условии, что формат правильный):
{
"results": [
{
"id": "Afghanistan",
"text": "Afghanistan"
},
...
для виджета я пробовал следующие варианты:
widget=autocomplete.ListSelect2(url='http://127.0.0.1:8000/accounts/country-list-autocomplete',),
widget=autocomplete.ListSelect2(url='accounts/country-list-autocomplete',),
widget=autocomplete.ListSelect2(url='country-list-autocomplete',),
каждый безрезультатно. У меня нет ошибки в терминале, и запрос не генерируется.
Элемент html выглядит так, когда виджет не комментируется:
<select name="country"
id="id_country"
data-autocomplete-light-language="en-US"
data-autocomplete-light-url="/accounts/country-list-autocomplete"
data-autocomplete-light-function="select2">
<option value="Antarctica" selected="">Antarctica</option>
</select>
Есть идеи, почему это не работает?
Редактировать - пара замечаний по установке:
- с использованием Django 2.2.1
- jquery 3.3.1
- Я установил в установленных приложениях ebfore django.contrib.admin