我的表单中有一个 ModelChoiceField:
customer = forms.ModelChoiceField(Customer.objects.all())
问题是它呈现为具有数百个选项的下拉列表,并且用户很难找到客户,有没有办法克服这个问题???
我的表单中有一个 ModelChoiceField:
customer = forms.ModelChoiceField(Customer.objects.all())
问题是它呈现为具有数百个选项的下拉列表,并且用户很难找到客户,有没有办法克服这个问题???
您应该使用Bootstrap Select - 这是一个 JQuery 插件,允许通过设置data-live-search="true"
所需的字段来搜索下拉数据。
您还可以设置data-size="5"
仅在立即下拉字段中显示前 5 个选项,其他项目通过滚动访问。
(如果问题是加载此下拉列表所需的时间,这将无济于事)。
这是不正确的方式来做你想要在这里完成的事情。
如果您显示超过 20 个左右的客户,那么 UI 会混乱,并且很难找到具有ChoiceField
. 您可能希望将数据库中的数据索引到全文搜索引擎中,例如ElasticSearch
基于该引擎的全文搜索引擎Lucene
,然后使用 AJAX 通过其名称或任何唯一标识符查询特定客户。
不用说,现在您的表单将有一个文本字段,而不是 ChoiceField,一旦用户尝试填写名称,AJAX 调用就会从 ElasticSearch 获取客户并呈现结果。