【问题标题】:django - Creating a radio select with select box optionsdjango - 使用选择框选项创建单选框
【发布时间】: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


【解决方案1】:

在forms.py中

CHOICES = (('0', 'option1',), ('1', 'option2',), ('2', 'option3',))

类NameForm(forms.ModelForm):

options = forms.ChoiceField(initial=0, widget = forms.RadioSelect(renderer = HorizontalRadioRenderer), choices=OPTIONS)

【讨论】:

  • 感谢@gangakvp,但我认为您的回答没有抓住重点。如何制作 option1、option2 等表单输入(即选择框)而不是字符串?
  • 没有发给z.u的人都明白,你给选项1的选择列表,选项2的另一个选择列表。
猜你喜欢
  • 2011-06-14
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
相关资源
最近更新 更多