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

Yeo*_*Yeo 9 forms django html-select django-forms drop-down-menu

根据#17950 aboutModelChoiceField允许选择单个模型对象,适合表示外键。

请注意,当条目数量增加时,ModelChoiceField 的默认小部件变得不切实际。您应该避免将它用于 100 多个项目。

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

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


解决方案1

仍然使用ModelChoiceField但具有定制插件如SELECT2选择反应-选择,等...的代替Select部件。它可能有助于筛选选项。当用户键入选择框的输入时,将异步查询选择以分离 API 端点。

解决方案2

Primitive,就是为一个空白CharField提供一个TextInputWidget。因此,用户将不得不手动输入该值。

解决方案3

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

在此处输入图片说明


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

小智 -1

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

  • 你的努力在哪里。 (3认同)