Manual · 3

Registros hijos

Muestra todas las filas de otra tabla que hacen referencia a esta fila mediante clave foránea – como una lista, no como un valor individual. Lo inverso de un campo de clave foránea: allí la fila “hija” apunta a su única fila “padre”, aquí la fila “padre” muestra todas sus filas hijas a la vez.

Ejemplo práctico: una factura debe mostrar sus líneas de factura como lista – una columna “Líneas” en la tabla facturas que enumera todas las filas correspondientes de lineas_factura.

Para el caso de que solo se necesite un valor agregado sobre las filas hijas (por ejemplo, “número de líneas” o “suma de todos los precios de línea”), a menudo basta con un campo rollup, más sencillo. Un campo de registros hijos merece la pena cuando las propias filas individuales deben ser visibles – en la vista de cuadrícula, como lista en el formulario o en una plantilla de documento.

Creación

Al añadir una nueva columna, en la pestaña “Registros hijos” eliges:

  1. la tabla hija (cualquier otra tabla de la misma fuente de datos),
  2. su campo de clave foránea que hace referencia de vuelta a esta tabla,
  3. las columnas a mostrar de la tabla hija (selección múltiple – si la selección queda vacía, se muestran todas las columnas reales de la tabla hija).

Un campo de registros hijos es de solo lectura: no se pueden añadir ni quitar filas directamente desde la fila padre – eso significaría cambiar el campo de clave foránea de la fila hija. Para añadir, quitar o editar los valores de una fila hija, ábrela a través de su propia tabla o mediante un clic (ver más abajo).

Visualización en la vista de cuadrícula

Una celda siempre muestra una insignia con el número de filas hijas encontradas, por ejemplo “3 registros” – independientemente de cuántas columnas se hayan seleccionado, no hay (a diferencia de los campos de enlace) una vista en línea como chips, ya que las filas hijas con varias columnas no encajan bien para eso.

Un clic en la insignia abre un modal con una tabla sencilla: una columna por cada columna hija seleccionada, una fila por cada registro hijo. Un clic en una fila abre el registro completo de la tabla hija para su edición.

Agregación de resumen

En la fila de resumen al pie de la vista de cuadrícula, para una columna de registros hijos solo está disponible COUNT – que cuenta el número total de todas las filas hijas a través de todas las filas padre mostradas actualmente (no solo el número de filas en la insignia de una única fila). SUM, AVG, MIN y MAX no existen para este tipo de campo – para un único número agregado sobre las filas hijas (por ejemplo, una suma), un campo rollup es la elección correcta.

En plantillas de documento

Un campo de registros hijos se puede usar en una plantilla de documento como lista iterable, tal como en el ejemplo anterior:

{% for item in lineas %}
  {{ item.descripcion }} -- {{ item.cantidad }} x {{ item.precio_unitario }}
{% endfor %}

Cada entrada (item) tiene exactamente las columnas que se seleccionaron al crear la columna.

Cambiar la conexión a posteriori

A través del menú contextual de columna → “Editar campo”, la conexión de un campo de registros hijos existente se puede ajustar en cualquier momento sin necesidad de eliminar y volver a crear la columna. En el modal de edición aparecen, además del nombre del campo y el formato de visualización, listas desplegables ya preseleccionadas o una selección múltiple para:

  1. la columna FK hija (tabla hija junto con el campo de clave foránea que hace referencia de vuelta a esta tabla),
  2. las columnas a mostrar de la tabla hija (selección múltiple).

Ambas se pueden cambiar de forma independiente entre sí; un clic en “Guardar” aplica la nueva conexión de inmediato.

Limitaciones conocidas

  • No se puede filtrar (como Rollup – Lookup y Enlaces sí se pueden).
  • Sin límite por fila padre: se cargan todas las filas hijas correspondientes, incluso si son muy numerosas.

Para el caso de que solo se necesite un valor de la fila de destino en la dirección contraria (la fila hija mira a su fila padre), consulta Lookup.