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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4788388/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-18 17:31:02  来源:igfitidea点击:

How do I use Django's form framework for select options?

pythonhtmldjangoforms

提问by TIMEX

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

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

Here, it says I can do SELECT widgets. But how do I do that? It doesn't show any example on how to write that field in python.

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

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

采纳答案by Yuji 'Tomita' Tomita

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>

回答by errx

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

回答by ion-tichy

errx's solution was almost correct in my case, the following did work (django v1.7x):

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

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

The elements inside CHOICES correspond to ($option_value,$option_text).

CHOICES 中的元素对应于 ($option_value,$option_text)。

回答by Siraj Alam

Django 2.0

Django 2.0

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

BTW tuple also works as same as list.

顺便说一句,元组也与列表相同。

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