Обработка ошибок для проверенных полей Django multiselectfield - PullRequest
0 голосов
/ 13 июня 2019

У меня есть условная проверка, где мне нужно посмотреть на определенный флажок, и, в зависимости от этого, становится обязательным поле множественного выбора.

У меня что-то похожее на месте:

{% 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}} или {{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>

1 Ответ

0 голосов
/ 03 июля 2019

Rant: Как и во многих других вопросах Django, которые я задавал, я должен был опубликовать свой собственный ответ.End Rant!

Наряду с вышеприведенной проверкой просто выполните цикл по полю .errors и отобразите ошибку. Примечание: 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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...