Django ModelChoiceField,数千个选项,不是用户友好的



我的表单中有一个ModelChoiceField:

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

问题是它呈现为包含数百个选项的下拉列表,并且用户很难找到客户,有没有办法克服这一点???

您应该使用 Bootstrap Select - 这是一个 JQuery 插件,允许通过在所需字段上设置data-live-search="true"来搜索下拉数据。

您还可以设置data-size="5",该仅在即时下拉字段中显示前 5 个选项,其他项目可通过滚动访问。

(如果问题是加载此下拉列表所需的时间,这将无济于事)。

这是执行您在此处尝试完成的任务的错误方法。

如果您显示的客户超过 20 个左右,那么 UI 会混乱,并且很难找到具有ChoiceField的客户。您可能希望将数据库中的数据索引到全文搜索引擎(如基于LuceneElasticSearch),然后使用 AJAX 按名称或任何唯一标识符查询特定客户。

不用说,现在您的表单将有一个文本字段,而不是 ChoiceField,一旦用户尝试填写名称,AJAX 调用就会从 ElasticSearch 获取客户并呈现结果。

最新更新