对于大量选择,ModelChoiceField有哪些替代方案?

时间:2015-12-28 18:22:21

标签: django forms drop-down-menu django-forms html-select

根据#17950关于ModelChoiceField,它允许选择适合表示外键的单个模型对象。

  

请注意,当条目数增加时,ModelChoiceField的默认小部件变得不切实际。你应该避免使用它超过100个项目。

这很明显,因为从选择框中选择100个选项并不容易。一个人必须向下滚动或找到选项。

如果有很多选择,有什么可能的解决方案?

解决方案1 ​​

仍然使用ModelChoiceField,但使用自定义窗口小部件,例如select2chosenreact-select等...而不是Select窗口小部件。它可能有助于筛选选项。当用户键入选择框的输入时,将以异步方式查询选项以分离API端点。

解决方案2

Primitive,是提供一个空白的CharField和一个TextInput小部件。因此,用户必须手动输入值。

解决方案3

通过提供列出所有选项的弹出窗口,可以进一步改进解决方案2。用户可以搜索选项,单击选项后窗口将关闭,表单将自动填充值。弹出窗口与django管理列表非常相似。 (Checkout Grappelli RelatedLookup了解更多我的意思,见下图)

enter image description here

请问还有其他解决方案吗?为什么这个解决方案更好?

1 个答案:

答案 0 :(得分:0)

我在我的UX中使用了上一页,其中包含可以搜索和分页数据的选项列表,然后用户从列表中选择一个项目,将其重定向到另一个页面,在该页面中有一个隐藏字段表单填充了上一个列表中选择的项目。