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