Una restricción es una regla asociada a una propiedad de un modelo. Las restricciones tienen dos finalidades: indican a Yellow cómo mostrar la propiedad en los formularios y tablas, y le dicen qué valores son válidos al guardar una instancia.

Las restricciones viven dentro de una vista, de modo que una misma propiedad puede tener reglas distintas para el formulario de creación, el de edición, el listado en tabla, etc. Cuando una vista no define una restricción concreta, Yellow cae a la vista por defecto.

Restricciones de visualización

Cada propiedad lleva una restricción de visualización. Controla el layout, no los valores.

Campo Qué hace
visible Si la propiedad aparece en el formulario o en la tabla.
order La posición de la propiedad entre sus hermanas.
readonly Desactiva la edición pero sigue mostrando el valor.
flex Pista de anchura: cuánto espacio horizontal ocupa la propiedad en su fila.
group Etiqueta opcional de sección para agrupar propiedades relacionadas.

Las restricciones de visualización son las que la mayoría de usuarios ajustan a diario: ocultar campos de auditoría en el formulario de creación, reordenar columnas en la vista de tabla, marcar campos calculados como solo-lectura en la edición, etc.

Restricciones de valor

Más allá de la visualización, Yellow incluye restricciones tipadas que validan el valor en sí mismo. El tipo disponible depende del tipo de la propiedad:

Restricciones de texto

Para propiedades de tipo texto.

  • Required — el campo no puede estar vacío.
  • Longitud mínima / Longitud máxima — límites de caracteres.
  • Líneas mínimas / Líneas máximas — para texto multilínea.
  • Expresión regular — un patrón regex que el valor debe cumplir.
  • Mail — cuando está activo, el valor debe ser una dirección de correo electrónico bien formada.
  • Edit widget — escoge el editor usado en el formulario (entrada de una sola línea, área de texto, correo, etc.).

Restricciones de entero

Para propiedades numéricas enteras.

  • Required — el campo no puede estar vacío.
  • Mínimo / Máximo — límites numéricos (incluidos).
  • Enumeración — limita el valor a una lista de elementos predefinidos, mostrados como desplegable.

Restricciones de datetime

Para propiedades de fecha y hora.

  • Required — el campo no puede estar vacío.
  • Modo de visualización — si el selector muestra solo fecha, solo hora, o ambas cosas.

Restricciones de referencia a instancia

Para propiedades que apuntan a otra instancia.

  • Required — la referencia no puede estar vacía.
  • Modelo objetivo — el modelo al que debe apuntar la referencia.
  • Owned — cuando es verdadero, la instancia referenciada es propiedad (composición): si borras el padre se borra también el hijo. Cuando es falso, es una referencia simple.
  • Filtro — una expresión de filtro dinámica que limita las instancias candidatas mostradas al usuario.

Restricciones de colección

Para propiedades que contienen una colección de elementos.

  • Recuento mínimo / Recuento máximo — límites del número de elementos.
  • Modelo objetivo — el modelo de los elementos de la colección.
  • Tipo de elemento — qué tipo de elemento contiene la colección (referencia a instancia, a propiedad, etc.).

Restricciones por vista

Una restricción tipada puede definirse globalmente (en la vista por defecto) o por vista (por ejemplo, solo en create). El patrón más habitual es:

  1. Definir las reglas estrictas en la vista por defecto — por ejemplo, email es obligatorio y cumple un regex.
  2. Sobrescribir por vista solo cuando haga falta — por ejemplo, hacer un campo de sistema solo-lectura y oculto en create pero visible y solo-lectura en update.

Si una vista no define una restricción tipada para una propiedad, Yellow utiliza la de la vista por defecto. Si la vista por defecto tampoco la tiene, no se aplica ninguna validación más allá de lo que ya garantiza el tipo.

Dónde editar las restricciones

Abre el modelo desde el Explorador. En el editor de propiedades, escoge una vista en el selector de Vistas y haz clic en una propiedad para editar su restricción de visualización y (si está disponible) su restricción tipada. Guarda para publicar los cambios; los formularios de instancias de toda la aplicación adoptan las nuevas reglas inmediatamente.