我有条件检查,需要查看某个复选框,并因此而需要多选字段。
我有类似的地方:
{% for value, text in form.customfield.field.choices %}
<div class="checkbox custom-control custom-checkbox list-inline-item" style="display:inline-flex;">
<input type="checkbox" name="{{customfield.name}}" value="{{value}}" class="list-inline-item custom-control-input" title="" id="id_{{value}}" {% if value in customfield.data %} checked="checked"{% endif %}>
<label for="id_{{value}}" class="form-check-label custom-control-label mr-3">{{text}}</label>
</div>
{% endfor %}
有没有办法对此进行错误处理?我验证了我的form.is_valid()返回false,但是没有显示错误消息,就像输入/文本框一样。我假设我需要在模板中明确打印出特定错误,因为我没有使用 {{form.customfield}} 或 < em> {{bootstrap_field}}
form.is_valid() 返回False。
form._errors 给我:
<ul class="errorlist"><li>customfield<ul class="errorlist"><li>This field is required when the other field is checked.</li></ul>
答案 0 :(得分:0)
Rant:与我问过的其他许多Django问题一样,我不得不发表自己的答案。结束兰特!
进行上述检查后,只需遍历字段。错误并显示错误 注意:invalid-feedback用于在Bootstrap4中隐藏/显示错误消息,因此
<div id="id_{{customfield.name}}" class="list-inline-item {% if customfield.errors %} is-invalid{% endif %}">
{% for value, text in form.customfield.field.choices %}
<div class="checkbox custom-control custom-checkbox list-inline-item">
<input type="checkbox" name="{{customfield.name}}" value="{{value}}" class="list-inline-item custom-control-input" title="" id="id_{{value}}" {% if value in customfield.data %} checked="checked"{% endif %}>
<label for="id_{{value}}" class="form-check-label custom-control-label">{{text}}</label>
</div>
{% endfor %}
</div>
{% if customfield.errors %}
<div class="invalid-feedback">
{% for error in customfield.errors %} {{ error }} {% endfor %}
</div>
{% endif %}