【发布时间】:2013-02-14 11:33:11
【问题描述】:
我想创建一组如下所示的单选选项:
非标准部分是选择第一个或第二个单选按钮选项需要用户进一步从选择框中指定信息。
如何使用 django 表单执行此操作?根据我在docs 中看到的内容,您可以传递一个只有字符串作为人类可读值的选择 2 元组,我需要能够传递一个小部件和一个标签。我正在通过模板中的 django-crispy-forms 呈现表单(即我的所有模板都是{% crispy form %}),所以我更喜欢不需要任何模板端操作的解决方案。
谢谢!
【问题讨论】:
-
问题是,即使您可以将小部件传递给选择元组,django 会将微调器中的值与哪个模型字段相关联?您是否考虑过在表单中删除控件,使用 CSS 定位它们,然后使用 javascript 来启用或禁用它们?
-
@Mariano 此表单不直接绑定到模型(即不是 ModelForm,只是一个表单)。 “放弃控制”是什么意思?
-
对不起,我的意思是在 html 中显示它们,然后使用 CSS 来定位它们,并使用 JS 来控制它们的行为。问题在于它是模板端(或更多客户端)操作,因此并不是真正可重用的。你想要什么,定义你的自定义小部件,记录在 here 作为创建由其他小部件组成的小部件的一种方式。还列出了一些实现,因此您可以随时查看它们并按照示例进行操作。
-
此外,即使这与模型无关,您也应该考虑数据的服务器端表示。例如,您是否只有一个包含 3 个可能值的选择字段?然后只有一个“附加值”文本字段?或者您是否有三个不同的字段,并且一次只能填充其中一个?为了更好地建模,我会考虑如何处理来自服务器的 POST 数据。
-
感谢@Mariano,我最终按照您最初的建议简化并有条件地启用和禁用单独的列表框。
标签: django django-forms django-crispy-forms