我创建了一个Django表单,该表单在其中一个字段中具有下拉菜单。当我尝试提交表单而不选择下拉菜单项时,该表单未提交,因为我在代码中设置了除非使用is_valid()
有效的表单,否则表单不会提交。
但是,它没有显示验证错误消息。在浏览器控制台中,是错误消息An invalid form control with name='start_position' is not focusable.
我已经阅读了一些有关此的问题,他们说这是因为存在一个隐藏字段而发生的。检查元素后,确实是div class ='start_position'被隐藏了。 但是,我不知道如何在Django中修复它。
这是创建下拉字段的代码。
class LocationForm(forms.Form):
start_position = forms.ModelChoiceField(
required=True,
label="Start Position",
queryset=Location.objects.all()
)
这是呈现的HTML
<div class="formColumn form-group col-md-6 mb-0">
<div id="div_id_start_position" class="form-group">
<label for="id_start_position" class="col-form-label requiredField">
Start Position<span class="asteriskField">*</span>
</label> <div class="">
<select name="start_position" class="select form-control" required="" id="id_start_position" style="display: none;">
<option value="" selected="">---------</option>
<option value="78">Loc 78</option>
<option value="79">Loc 79</option>
<option value="80">Loc 80</option>
</select><div class="nice-select select form-control" tabindex="0">
<span class="current">Loc 78</span>
<ul class="list">
<li data-value="" class="option">---------</li>
<li data-value="78" class="option selected">Loc 78</li>
<li data-value="79" class="option">Loc 79</li>
<li data-value="80" class="option">Loc 80</li>
</ul></div>
</div>
</div>
我希望验证消息像在其他字段中一样显示(我尝试过DateField
,验证工作正常)。