📅  最后修改于: 2023-12-03 15:33:00.549000             🧑  作者: Mango
在 Django 中,表单是一种用于从用户那里收集数据的机制。Django 表单类包含多个字段,每个字段代表表单中的输入控件。
MultipleChoiceField
是 Django 表单中的一种字段类型。它允许用户从多个选项中选择一或多个选项。
以下是创建 MultipleChoiceField
字段的一些示例。
from django import forms
class ExampleForm(forms.Form):
OPTIONS = [
('1', 'Option 1'),
('2', 'Option 2'),
('3', 'Option 3'),
]
example_field = forms.MultipleChoiceField(choices=OPTIONS)
此代码演示了如何创建一个简单的 MultipleChoiceField
,其中 example_field
是字段的名称,OPTIONS
是一个选项元组列表。每个元组包含两个元素:选项的值和选项的显示名称。
class ExampleForm(forms.Form):
OPTIONS = [
('1', 'Option 1'),
('2', 'Option 2'),
('3', 'Option 3'),
]
DEFAULT_CHOICES = ['1', '2']
example_field = forms.MultipleChoiceField(choices=OPTIONS, initial=DEFAULT_CHOICES)
上面的代码指定 DEFAULT_CHOICES
列表作为默认选项。
class ExampleForm(forms.Form):
OPTIONS = [
('1', 'Option 1'),
('2', 'Option 2'),
('3', 'Option 3'),
]
example_field = forms.MultipleChoiceField(choices=OPTIONS, widget=forms.CheckboxSelectMultiple)
在这个示例中,我们使用 CheckboxSelectMultiple
将多个复选框放在同一个表单字段中。如果您想要在同一个表单字段中显示多个单选按钮,请使用 RadioSelect
。
class ExampleForm(forms.Form):
OPTIONS = [
('1', 'Option 1'),
('2', 'Option 2'),
('3', 'Option 3'),
]
example_field = forms.MultipleChoiceField(choices=OPTIONS)
def clean_example_field(self):
data = self.cleaned_data['example_field']
if '1' in data and '2' in data:
raise forms.ValidationError("You cannot select both Option 1 and Option 2.")
return data
上面的代码演示了如何验证表单字段。请注意 clean_example_field
方法的签名:它必须以“clean_”开头,后跟字段的名称。
在 clean_example_field
中,我们检查用户是否同时选择了选项1和选项2。如果是这样,我们会引发 ValidationError
,并显示恰当的错误消息。
使用 MultipleChoiceField
,您可以让用户从多个选项中进行选择。您可以通过指定选项,设置默认值,使用 widget 或验证选择来自定义字段的行为。