Django 表单。使前端需要 ChoiceField <select>
Django forms. Make ChoiceField required on frontend <select>
我创建了一个使用 ChoiceField 的 Django 表单:
control_model = forms.ChoiceField(choices=(), required=True)
('choices' 为空的原因是因为它们是使用基于我的后端数据库的函数设置的)
完整表格如下:
class CreateWorkflowForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CreateWorkflowForm, self).__init__(*args, **kwargs)
self.request = kwargs.pop("request")
self.fields['control_model'].choices = my_function()
control_model = forms.ChoiceField(choices=(), required=True)
class Meta:
model = CreateWorkflowModel
fields = ['control_model']
使用的模型如下所示:
class CreateWorkflowModel(models.Model):
control_model = models.CharField(max_length=100)
我通过以下方式在 Django 模板中使用此表单:
<div class="form-content">
{{ form.media }}
{{ form.as_p }}
<input type="submit" id="id_submit" value="Submit" />
</div>
但是在我的网页上,对应于我的 ChoiceField 的 <select>
没有属性 'required':
这意味着如果没有向 ChoiceField 输入值(因为它在表单中是必需的),我的表单将失败,但是我更希望前端出现一个弹出框,说明“您需要在此输入一个值场”。
我知道 <select>
上的“必需”值会做这件事,但是我不知道如何让 django 生成具有此属性的 <select>
。
如果您的 select 需要必需的属性,您必须首先选择具有空值的元素,否则它是无效的 HTML。
查看小部件source code
我创建了一个使用 ChoiceField 的 Django 表单:
control_model = forms.ChoiceField(choices=(), required=True)
('choices' 为空的原因是因为它们是使用基于我的后端数据库的函数设置的)
完整表格如下:
class CreateWorkflowForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CreateWorkflowForm, self).__init__(*args, **kwargs)
self.request = kwargs.pop("request")
self.fields['control_model'].choices = my_function()
control_model = forms.ChoiceField(choices=(), required=True)
class Meta:
model = CreateWorkflowModel
fields = ['control_model']
使用的模型如下所示:
class CreateWorkflowModel(models.Model):
control_model = models.CharField(max_length=100)
我通过以下方式在 Django 模板中使用此表单:
<div class="form-content">
{{ form.media }}
{{ form.as_p }}
<input type="submit" id="id_submit" value="Submit" />
</div>
但是在我的网页上,对应于我的 ChoiceField 的 <select>
没有属性 'required':
这意味着如果没有向 ChoiceField 输入值(因为它在表单中是必需的),我的表单将失败,但是我更希望前端出现一个弹出框,说明“您需要在此输入一个值场”。
我知道 <select>
上的“必需”值会做这件事,但是我不知道如何让 django 生成具有此属性的 <select>
。
如果您的 select 需要必需的属性,您必须首先选择具有空值的元素,否则它是无效的 HTML。 查看小部件source code