如何使用 Django 的表单框架来选择选项?

Posted

技术标签:

【中文标题】如何使用 Django 的表单框架来选择选项?【英文标题】:How do I use Django's form framework for select options? 【发布时间】:2011-06-14 20:59:47 【问题描述】:

http://docs.djangoproject.com/en/dev/ref/forms/widgets/#django.forms.Select

在这里,它说我可以做 SELECT 小部件。但是我该怎么做呢? 它没有显示任何关于如何在 python 中编写该字段的示例。

 <select>
   <option>option 1</option>
   <option>option 2</option>
 </select>

【问题讨论】:

【参考方案1】:

Django 2.0

Options = [
        ('1', 'Hello'),
        ('2', 'World'),
      ]
category = forms.ChoiceField(label='Category', widget=forms.Select, choices=sample)

顺便说一句,元组也和列表一样工作。

Options = (
        ('1', 'Hello'),
        ('2', 'World'),
     )
category = forms.ChoiceField(label='Category', widget=forms.Select, choices=sample)

【讨论】:

在 Django 2.1.15 中使用此格式时出现 TypeError,请搜索问题 #61037692【参考方案2】:

errx 的解决方案在我的情况下几乎是正确的,以下确实有效(django v1.7x):

CHOICES= (
('1','ME'),
('2','YOU'),
('3','WE'),
)
select = forms.ChoiceField(widget=forms.Select, choices=CHOICES)

CHOICES里面的元素对应($option_value,$option_text)。

【讨论】:

【参考方案3】:
class MyForm(forms.Form):
    CHOICES = (('Option 1', 'Option 1'),('Option 2', 'Option 2'),)
    field = forms.ChoiceField(choices=CHOICES)

print MyForm().as_p()

# out: <p><label for="id_field">Field:</label> <select name="field" id="id_field">\n<option value="Option 1">Option 1</option>\n<option value="Option 2">Option 2</option>\n</select></p>

【讨论】:

它说:__init__() 得到了一个意外的关键字参数“选择” 选项应该在小部件构造函数中定义 感谢您修复它 TIMEX :P【参考方案4】:
CHOICES= (
('ME', '1'),
('YOU', '2'),
('WE', '3'),
)
select = forms.CharField(widget=forms.Select(choices=CHOICES))

【讨论】:

以上是关于如何使用 Django 的表单框架来选择选项?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 html 表单更新基于 django 模型的表单(具有选择选项)记录

Django:如何添加动态类以选择表单中的选项

如何在 Django 表单中编辑选择选项值?

如何在django中为问题添加多个表单字段类型的选项?

Django:如何根据表单中的选定选项在模板上显示来自 django 数据库的图像?

在 Django 表单中,如何呈现单选按钮以便在页面上分隔选项?