Saltar a contenido

Columnas de tabla

Configura listados con TableBuilder y ColumnBuilder; el widget data-table consume la configuración emitida.

Cuándo usar

  • Página list de un ResourceBuilder.
  • Tabla dentro de un RelationBuilder.
  • Dashboard manual con widget data-table / api-table (alias legacy).

Ejemplo mínimo

.table(
    lambda t: (
        t.path("/api/v1/clients/clients")
        .title("Clientes")
        .page_size(25)
        .default_sort("name")
        .columns(
            lambda c: (
                c.text("name", "Nombre", sortable=True, searchable=True)
                .text("email", "Email")
                .badge("status", "Estado")
            )
        )
        .filters(lambda f: f.text("name", "Nombre", field="name"))
        .actions(
            lambda a: (
                a.edit("/api/v1/clients/clients/{id}/edit", "Editar")
                .view("/api/v1/clients/clients/{id}", "Ver")
            )
        )
    )
)

ColumnBuilder

Método Tipo Notas
.text() text Texto plano
.badge() badge Estado con color
.date() date Fecha
.boolean() boolean Sí/No
.money() money Importe

Opciones: sortable=True, searchable=True.

FilterBuilder

Método kind
.text() text
.boolean() boolean
.select() select
.ternary() ternary

Los filtros envían filter[campo]=valor al listado. Tu API puede ignorarlos o aplicar apply_list_query.

TableBuilder adicional

Método Efecto
.path(str) URL de datos
.title(str) Título del widget
.page_size(int) Filas por página (default 25)
.default_sort(str) Campo inicial
.bulk_actions(fn) Operaciones masivas
.summaries(...) Totales por columna
.grid(xs=12, md=6) Span en layout grid

Contrato HTTP

La tabla espera respuesta { items, meta } o array. Ver API REST.

Query: page, pageSize, sort, search, filter[field].

Cada fila necesita id para acciones y selección múltiple.

Siguiente paso

Acciones — botones de fila, cabecera y bulk.