{% load form_helpers %} {% load i18n %} {% load custom_object_utils %} {# Render all custom object form fields with group headings and poly groupings. #} {# Used by both customobject_edit.html and the htmx/edit_fields.html partial. #}
{% for group, fields in form.custom_object_type_field_groups.items %} {% if group %}

{{ group }}

{% endif %} {% for name in fields %} {% if name in form.custom_object_type_poly_obj_ct_names %} {# Polymorphic single-object pair: heading + type selector + object picker #} {% with pair=form.custom_object_type_poly_obj_pairs|dict_get:name %}

{{ pair.1 }}

{% render_field form|getfield:name %} {% render_field form|getfield:pair.0 %} {% endwith %} {% elif name in form.custom_object_type_poly_m2m_groups %} {# Polymorphic multi-object group: heading + one sub-field per allowed type #} {% with group_info=form.custom_object_type_poly_m2m_groups|dict_get:name %}

{{ group_info.1 }}

{% for sub_name in group_info.0 %} {% render_field form|getfield:sub_name %} {% endfor %} {% endwith %} {% else %} {% render_field form|getfield:name %} {% endif %} {% endfor %} {% endfor %} {# Render regular model fields (non-custom) that are not in any group #} {% for field in form %} {% if field.name not in form.custom_object_type_rendered_names %} {% if not field.field.widget.is_hidden and not field.field.disabled and field.field.widget.input_type != 'hidden' %} {% render_field field %} {% endif %} {% endif %} {% endfor %}