0

我的表单中有一个 ModelChoiceField:

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

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

4

2 回答 2

1

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

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

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

于 2017-05-04T14:06:04.393 回答
0

这是不正确的方式来做你想要在这里完成的事情。

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

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

于 2017-05-03T05:12:22.843 回答