Простое использование django-autocomplete-light - программирование

Простое использование django-autocomplete-light

Я пытаюсь понять, как использовать django-autocomplete-light для существующего проекта. Это похоже на хорошее решение автозаполнения для django, для которого я уже использую обычные ModelChoiceFields.

Итак, скажем, что у меня есть модель с именем MyModel с идентификатором и именем. То, что я хотел бы знать, - это самый простой способ создания виджета формы, который предоставит мне те же функции с

mymodel = forms.ModelChoiceField(  required=True, queryset=ships.models.Authority.objects.all() , ) 

поэтому я мог бы добавить этот виджет в любую форму, которую я хотел, чтобы выбрать экземпляры MyModel без использования selec.t

Каковы требуемые шаги для этого? Я уже добавил "autocomplete_light" в INSTALLED_APPS и

url(r'autocomplete/', include('autocomplete_light.urls')),

в urls.py и

import autocomplete_light
autocomplete_light.autodiscover()

до

admin.autodiscover()

однако я смущен тем, что делать дальше: (

Пожалуйста, не указывайте мне в документации, которую я уже полностью прочитал.

4b9b3361

Ответ 1

Выбор виджета по умолчанию для ModelChoiceField

В этом поле формы не указан виджет, поэтому по умолчанию должен использоваться виджет выбора с помощью:

mymodel = forms.ModelChoiceField(
                required=True,
                queryset=ships.models.Authority.objects.all(),
          ) 

Вот почему вы видите поле выбора вместо автозаполнения.

Вы читали django docs об использовании виджетов?

Используйте autocomplete_light.ChoiceWidget вместо

Все, что вам нужно сделать, это указать виджет:

mymodel = forms.ModelChoiceField(
            required=True,
            queryset=ships.models.Authority.objects.all(),
            widget=autocomplete_light.ChoiceWidget('AutocompleteName')
          ) 

Если вы не знаете, что такое имя автозаполнения, войдите в систему как персонал и откройте http://yoursite/autocomplete/.

Убедитесь, что вы правильно загрузили jquery и загрузили статические файлы автозаполнения.

Альтернативы

FTR: возможен другой способ, используя autocomplete_light.modelform_factory с помощью ярлыков, таких как autocomplete_light.modelform_factory или autocomplete_light.get_widgets_dict. API-документы являются проходимыми, но не превзойдут чтение исходного кода.

В общем, я думаю, что для вас проще всего использовать ярлык get_widgets_dict , если вы используете ModelForm.

Скрытые документы

Возможно, вы не нашли cookbook, потому что это незавершенная работа в ветке docs_rewrite, но вторая часть "Основы высокого уровня" "содержит несколько примеров использования виджета.

Я знаю, что у документов есть проблема, поэтому ветка docs_rewrite. Сейчас я сосредоточен на улучшении мобильной поддержки.