Как определить, есть ли в наборе форм какие-либо ошибки в шаблоне? - PullRequest
4 голосов
/ 25 июля 2010

Благодаря фантастическим встроенным наборам форм в django у меня есть довольно продвинутая форма с 4 встроенными наборами форм.В шаблоне я отображаю каждый набор форм на вкладке.Все работает очень хорошо, но я бы хотел покрасить вкладку в красный цвет, если в наборе форм на этой вкладке вообще есть какие-либо ошибки проверки.Поэтому я попробовал это:

<div id="tabs">
    <ul>
        <li><a href="#foo-tab"{% if forms.FooFormSet.errors %} class="error"{% endif %}>Foo</a></li>
        <li><a href="#bar-tab"{% if forms.BarFormSet.errors %} class="error"{% endif %}>Bar</a></li>
        <li><a href="#zoo-tab"{% if forms.ZooFormSet.errors %} class="error"{% endif %}>Zoo</a></li>
        <li><a href="#doo-tab"{% if forms.DooFormSet.errors %} class="error"{% endif %}>Doo</a></li>
    </ul>

    <div id="foo-tab"></div>
    <div id="bar-tab"></div>
    <div id="zoo-tab"></div>
    <div id="doo-tab"></div>
</div>

Но это не работает, потому что формы. * Set.errors - это список с пустыми словарями (поэтому он всегда будет возвращать True), например [{}, {}, {}](количество форм в наборах форм равно количеству пустых словарей в formset.errors

Я думаю, что одним из решений может быть создание подкласса BaseInlineFormSet и добавление метода has_errors или чего-то еще, а затем использование этой подклассовой базы для всехмои формы. Любые другие предложения? Спасибо!

Ответы [ 2 ]

5 голосов
/ 25 июля 2010

Вы можете проверить результат метода formset is_valid, который, в свою очередь, проверяет правильность каждой формы: {% if forms.FooFormSet.is_valid %}.

Насколько я знаю, это более или менее бездействие(база данных не затрагивается, формы не проходят повторную проверку), если формы уже прошли проверку, поэтому это никак не повлияет на производительность.

1 голос
/ 01 августа 2018
...