{% 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 %}