{% comment %} Override of crispy_tailwind's tailwind/layout/field_errors.html. Django 5.2 composes aria-describedby in BoundField.build_widget_attrs from the help-text id and "{auto_id}_error", and expects the form template to render the error container under that second id. crispy-tailwind's own copy still mints its own scheme, error_{counter}_{auto_id} — so {auto_id}_error is never rendered, and a screen reader announces the field as invalid without ever reading why (#295). The per-error paragraphs carry no id of their own. crispy-tailwind's old error_{counter}_{auto_id} scheme is dropped rather than kept alongside the container — a clean API change, not a compatibility alias. A consuming project that depended on the old ids learns about it from CHANGELOG.md or from its own failing tests. This file must stay at this same relative path so Django's app_dirs template loader picks it up ahead of crispy_tailwind's own copy — `mvp` is listed before `crispy_tailwind` in INSTALLED_APPS. See mvp/templates/tailwind/layout/help_text.html for the same override pattern applied to a different vendored template. {% endcomment %} {% if form_show_errors and field.errors %}
{% for error in field.errors %}

{{ error }}

{% endfor %}
{% endif %}