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