Django ModelChoiceField, тысячи вариантов, не дружественный пользователю

У меня есть ModelChoiceField в моей форме:

customer = forms.ModelChoiceField(Customer.objects.all())

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

2 ответа

Решение

Вы должны использовать Bootstrap Select - плагин JQuery, который позволяет искать выпадающие данные, устанавливая data-live-search="true" на нужном поле.

Вы также можете установить data-size="5" который будет показывать только первые 5 опций в раскрывающемся поле, остальные элементы доступны с помощью прокрутки.

(Это не поможет, если проблема заключается в времени, которое требуется для загрузки этого раскрывающегося списка).

Это неправильный способ сделать то, что вы пытаетесь сделать здесь.

Если вы отображаете более 20 или около того клиентов, то пользовательский интерфейс будет загроможден, и будет трудно найти клиента с ChoiceField, Возможно, вы захотите проиндексировать данные из вашей БД в систему полнотекстового поиска, такую ​​как ElasticSearch который основан на Lucene а затем используйте AJAX для запроса конкретного клиента по его имени или любому уникальному идентификатору.

Здесь нет необходимости говорить, что вместо ChoiceField теперь ваша форма будет иметь текстовое поле, и как только пользователь попытается ввести имя, вызовы AJAX извлекают клиентов из ElasticSearch и отображают результат.

Другие вопросы по тегам