{% extends "form_view.html" %} {% load i18n static crispy_forms_tags %} {% comment %} ItemForm's helper (literature/ui/formlayout.py) draws the four tabs and every field. page.content is overridden in full so the error summary sits above the form. {% endcomment %} {% block head %} {{ block.super }} {% endblock head %} {% block page.content %}
{% if problems %} {% include "literature/ui/item_form_problems.html" %} {% endif %} {% if next_url %}{% endif %} {% include "literature/ui/contributor_datalist.html" with id=contributor_names_datalist_id names=contributor_names %} {% comment %} No |safe: a raw double quote in this JSON would close the attribute early. Autoescaping emits ", which the tokenizer decodes back before Alpine reads it. {% endcomment %}
{% crispy form %}
{% comment %} No name/value pair on Save: the stock block posts default_next=list, which NextURLMixin reads ahead of success_url, and a save would land on the catalogue rather than the reference (FS-008). {% endcomment %}
{% endblock page.content %}