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>
しかし、forms.*Set.errors は [{}, {}, {}] のような空の辞書を持つリストであるため (常に True を返します) (フォームセット内のフォームの量は同じ量の空のものであるため)、機能しません。 formset.errors の辞書
私が考える 1 つの解決策は、BaseInlineFormSet をサブクラス化し、has_errors メソッドなどを追加して、そのサブクラス化されたベースをすべてのフォームセットに使用することです。他の提案はありますか?ありがとう!