{% extends base_template %} {% import "components/buttons.html" as buttons %} {% import "components/inputs.html" as inputs %} {% block title %}{% if record_id %}EDIT{% else %}CREATE{% endif %} {{ model_config.name }}{% endblock %} {% block breadcrumb %} {% endblock %} {% block content %}
{# Header #}
{% if record_id %}DATA UPDATE{% else %}NEW RECORD{% endif %}

{% if record_id %}EDIT {{ model_config.name }}{% else %}CREATE {{ model_config.name }}{% endif %}

{% if record_id %}Update record details{% else %}Fill in details to create new record{% endif %}

{# Error Summary #} {% if errors.get('__all__') %}

VALIDATION ERRORS

    {% for error in errors.get('__all__', []) %}
  • • {{ error }}
  • {% endfor %}
{% endif %} {# Form #}
{# CSRF Token #} {# Form Fields #}
{% for field in fields %}
{# Text Input #} {% if field.field_type.value == "text" %} {# Textarea #} {% elif field.field_type.value == "textarea" %} {# Number/Float Input #} {% elif field.field_type.value in ["number", "float"] %} {# Boolean Checkbox #} {% elif field.field_type.value == "boolean" %} {# Select Dropdown #} {% elif field.field_type.value == "select" %} {# Email Input #} {% elif field.field_type.value == "email" %} {# URL Input #} {% elif field.field_type.value == "url" %} {# Relationship (Smart Select - FK) #} {% elif field.field_type.value == "relationship" %} {{ inputs.relationship_input(field, values.get(field.name), errors.get(field.name)[0] if errors.get(field.name) else None) }} {# Many-to-Many Multi-Select #} {% elif field.field_type.value == "many_to_many" %}
{{ field.title }} Hold Ctrl/Cmd to select multiple
{% set current_ids = m2m_values.get(field.name, []) %} {% set choices = m2m_choices.get(field.name, []) %} {% if choices %}

{{ current_ids|length }} of {{ choices|length }} selected

{% else %}

No {{ field.title | lower }} available. Create some first.

{% endif %} {% if errors.get(field.name) %}

{{ errors.get(field.name)[0] }}

{% endif %}
{# JSON Input #} {% elif field.field_type.value == "json" %} {# Fallback for other types #} {% else %} {% endif %}
{% endfor %}
{# Actions #}
CANCEL
{% if record_id and not model_config.readonly %} {% endif %} {% if not model_config.readonly %} {% endif %}
{% if detail_panels and record %}
{% for panel in detail_panels %}

{{ panel.title }}

{{ panel.renderer(request=request, record=record, config=model_config)|safe }}
{% endfor %}
{% endif %}
@keyframes toast-in { from { opacity: 0; transform: translateX(100%); } to { opacity: 1; transform: translateX(0); } } .animate-toast-in { animation: toast-in 0.3s ease-out; } {% endblock %} ```