Saltar a contenido

Relaciones

Gestiona registros relacionados en la página de edición con RelationBuilder y el widget relation.

Cuándo usar

  • Un recurso padre tiene hijos (has many, belongs to many).
  • Necesitas tabla embebida + formulario de alta en la misma pantalla edit.

Ejemplo

.relation(
    lambda r: (
        r.id("bookings")
        .title("Reservas")
        .has_many()
        .api_path("/api/v1/booking/bookings")
        .list_path("/api/v1/booking/bookings?client_ref={id}")
        .form_id("booking-create")
        .table(
            lambda t: t.columns(
                lambda c: (
                    c.text("client_ref", "Cliente")
                    .badge("status", "Estado")
                )
            )
        )
    )
)

Referencia: plugins/booking/cortex_plugin_booking/resources.py.

RelationBuilder

Método Descripción
.id(str) Id de la relación
.title(str) Título en UI
.has_many() Tipo has_many
.belongs_to_many() Tipo belongs_to_many
.api_path(str) Base API de la relación
.list_path(str) Listado (puede usar {id} del padre)
.form_id(str) Formulario para crear hijo
.table(fn) Columnas del listado embebido

Widget emitido

{
  "type": "relation",
  "config": {
    "relationId": "bookings",
    "title": "Reservas",
    "kind": "has_many",
    "apiPath": "/api/v1/booking/bookings",
    "listPath": "...",
    "formId": "booking-create",
    "table": { ... }
  }
}

El RelationManagerWidget en @cortex/panel-shadcn renderiza tabla + alta inline.

Siguiente paso

Widgets — catálogo completo de tipos CUS.