我有一个django形式,目前是一个TextField输入,我想变成一个ChoiceField,这样我就可以不必比较类似的答案,以确定它们是否引用相同的东西。但是,可能的选择数量是多少(几百)。我真正想要的是一个可折叠的ChoiceField,用户可以在其中选择一个类别,然后选择一个子类别,等等,这样每个步骤都只会显示合理数量的选项(特别是因为很多用户都在移动设备上)屏幕尺寸有限)。这些选项非常适合明确的分类,因此这似乎是显示信息的好方法。然而,虽然我看到有关崩溃各种形式的其他各种方面的信息,但我还没有看到如何做到这一点。我甚至不确定追求什么途径才能使这项工作做得最好。 CSS或javascript似乎是大多数人制作可折叠列表的方式,但我不知道其中任何一个是否能与django Select小部件一起使用。做这种事情的最佳选择是什么?
以下是我所知道的选项: 1)写一些新的小部件。这听起来很糟糕(基于我编写新小部件的经验),但如果这是最佳选择,我会这样做。 2)使用普通的选择小部件并使用javascript来隐藏选项。我不确定如何选择干净组中的选项。 3)使用CSS可折叠列表和隐藏的表单字段以及一些javascript来从列表中获取值并将其插入到隐藏字段中。 4)使用一系列视图导航到最小的类别。这听起来很容易,干净整洁(因为所有的逻辑都在Python中我觉得很舒服),但需要多次重新加载,这对移动用户来说可能有问题。
答案 0 :(得分:0)
如果子类别的数量是无限的,这可能是您唯一的solution。如果它不是无限的,您可以立即加载页面上的所有选项以及它们的父类别,以便您可以决定通过javascript显示哪些选项。