Django ModelChoiceField,成千上万的选项,不是用户友好的

时间:2017-05-03 04:54:49

标签: django django-forms modelchoicefield

我的表单中有一个ModelChoiceField:

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

问题在于它呈现为数百种选项下拉而用户难以找到客户,有没有办法克服这个问题?

2 个答案:

答案 0 :(得分:1)

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

您还可以设置data-size="5",它只显示直接下拉字段中的前5个选项,其他项目可通过滚动访问。

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

答案 1 :(得分:0)

这是你做错的方法。

如果您显示超过20个左右的客户,那么用户界面会变得混乱,很难找到ChoiceField的客户。您可能希望将数据库中的数据编入全文搜索引擎,例如基于ElasticSearch的{​​{1}},然后使用AJAX通过它查询特定客户名称或任何唯一标识符。

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