Ir al contenido

Campo de Texto en Odoo: Guía Completa y Práctica

Guía esencial sobre el campo Texto en el modelo de datos de Odoo: uso cotidiano, buenas prácticas y claves para personalizarlo técnicamente
6 de marzo de 2026 por
Campo de Texto en Odoo: Guía Completa y Práctica
Dasolo
| Sin comentarios aún

Introducción


El campo de Texto en Odoo es la opción habitual cuando necesitas capturar entradas largas: desde anotaciones internas y descripciones de producto hasta comentarios extensos en pedidos o fichas de cliente. Si ves un área donde se escribe más de una línea, lo más probable es que sea este tipo de campo.


A simple vista parece un sencillo cuadro de texto multilínea, pero conocer sus propiedades y su sitio en el modelo de datos y en el ORM de Odoo cambia la forma de diseñar formularios, desarrollar módulos o configurar campos con Odoo Studio. Esa comprensión evita sorpresas en rendimiento, búsquedas o internacionalización.

Este manual explica qué guarda exactamente un campo de Texto, cómo se comporta en las vistas y en el ORM, ejemplos prácticos en procesos empresariales, las formas de crearlo o extenderlo, recomendaciones para usarlo correctamente y las trampas más comunes que conviene evitar.

¿Qué es el campo de Texto en Odoo?


En el ORM de Odoo, el tipo fields.Text sirve para almacenar texto multilínea sin formato. En la base de datos PostgreSQL se crea una columna de tipo TEXT, sin límite de caracteres. Puedes guardar desde una nota breve hasta largos párrafos sin preocuparte por cortapisas de longitud.


En los formularios se muestra como un <textarea> redimensionable; en vistas de lista se recorta para ajustarse al ancho; y en búsquedas permite filtros basados en texto, de forma similar a los campos Char cuando están incluidos en la vista de búsqueda.


A continuación verás un ejemplo minimalista de cómo se declara un campo de Texto en un módulo Python:

from odoo import fields, models

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    internal_notes = fields.Text(
        string='Internal Notes',
        translate=False,
    )

En Odoo Studio este tipo aparece como Multi-Line Text. Si lo creas desde Studio, Odoo genera automáticamente un nombre técnico que empieza por x_studio_. Si lo defines en código o vía API, eliges tú el identificador técnico del campo.


Diferencias frente a Char y Html

Odoo dispone de varias opciones para texto y elegir la adecuada evita problemas: Char, Text y Html cubren necesidades distintas y conviene conocer sus límites antes de decidir.


  • Char: campo de una sola línea. Ideal para nombres, códigos, referencias breves o datos que ocupan poco espacio. Puede llevar una longitud máxima opcional.
  • Text: textarea multilínea sin formato. Pensado para notas, descripciones internas o comentarios libres. Almacena texto plano sin etiquetas ni formato.
  • Html: editor enriquecido WYSIWYG. Se usa cuando el formato importa (párrafos, listas, enlaces o estilos) —por ejemplo en plantillas de correo o descripciones web— ya que guarda marcado HTML.

El campo Text ocupa el hueco intermedio: ofrece más espacio que un Char pero sin la complejidad del HTML. Para la mayoría de notas internas y descripciones sencillas es la opción adecuada en el modelo de datos de Odoo.

Cómo funciona el campo


Al añadir un campo Text en un modelo, Odoo genera la columna TEXT en PostgreSQL al instalar o actualizar el módulo; no necesitas escribir migraciones SQL manuales para este cambio.


A diferencia del Char, el campo Text no admite un parámetro size porque no tiene límite de caracteres por diseño: está pensado para contenido abierto donde fijar un tope preventivamente no tiene sentido.


Atributos clave del campo

Estos son los atributos más relevantes que definen el comportamiento de un campo Text en Odoo:


  • translate: Si se establece en True, el contenido puede traducirse por idioma. Útil en instancias multilingües para textos que aparecerán a usuarios finales.
  • required: Convierte el campo en obligatorio tanto en la interfaz como en el nivel del ORM. El registro no se puede guardar sin un valor.
  • default: Valor por defecto al crear registros; puede ser una cadena estática o una función que devuelva el valor.
  • compute: Permite enlazar un método Python que calcule el contenido dinámicamente, útil para resúmenes o textos derivados.
  • store: Al combinarse con compute, determina si el valor computado se guarda en la base de datos. Con store=True el texto puede indexarse y buscarse en listados y reportes.
  • copy: Controla si el valor se duplica al duplicar el registro. Por defecto es True; ponlo a False cuando no quieras que las notas se arrastren a duplicados.
  • index: Rara vez se aplica directamente a Text porque los índices B-tree no son adecuados para textos largos. Para búsquedas por contenido conviene usar la búsqueda de texto completa de PostgreSQL o los filtros que ofrece Odoo.

Cómo se muestra en las vistas

En formularios, se renderiza como un <textarea> que puede crecer verticalmente; en listas, el contenido aparece recortado; y en vistas de búsqueda puedes habilitar filtros de texto si añades el campo a la definición de búsqueda.


A diferencia del Html, el Text no carga editor WYSIWYG: el usuario escribe texto plano y lo que introduce —con saltos de línea— es exactamente lo que se almacena en la base de datos.


Interacción con el ORM de Odoo

Desde el punto de vista del desarrollador, leer y escribir campos Text es directo: se accede al atributo del record y el ORM persiste el valor tal cual. No existe saneamiento automático ni escape especial, a diferencia de los campos Html donde Odoo aplica filtros para evitar riesgos XSS.

Casos de uso en la empresa


El campo Text aparece en múltiples áreas de Odoo donde se requiere escribir más de una línea. A continuación tienes ejemplos concretos extraídos de procesos reales en empresas.


Ventas: notas internas en pedidos

En pedidos de venta se usan campos tipo Text para almacenar instrucciones de entrega, requisitos de embalaje especiales o preferencias del cliente que no encajan en campos estructurados. Estas notas acompañan al pedido internamente y no se imprimen en documentos al cliente salvo que se diseñe específicamente.


Almacén: notas internas del producto

En la ficha de producto Odoo incluye una pestaña de Notas con un campo Text para comentarios operativos. Los equipos logísticos anotan instrucciones de manipulación, precauciones de fragilidad o detalles del proveedor que no deben exponerse en la web ni en documentos al cliente.


Compras: condiciones y instrucciones al proveedor

En pedidos de compra un campo Text sirve para registrar acuerdos verbales, restricciones de entrega o aclaraciones recibidas por correo. Tener esa información ligada al pedido evita malentendidos cuando llega la mercancía y la conversación original ya no está accesible.


CRM: resúmenes de oportunidades y notas de reuniones

Los comerciales suelen añadir un campo Text en oportunidades para guardar apuntes de reuniones, objeciones del cliente o contexto del proceso de compra. A diferencia de los mensajes del chatter, un campo dedicado mantiene esa información ordenada y fácil de leer cuando otro usuario retoma la oportunidad.


RRHH: comentarios sobre empleados y candidatos

En recursos humanos se utilizan campos Text para notas de entrevistas, observaciones de onboarding o valoraciones de desempeño. Añadir este tipo de campo en el modelo del empleado permite conservar la información junto al registro sin crear modelos adicionales, y facilita su búsqueda en informes internos.

Crear o personalizar el campo de Texto


Formas de añadir un campo de Texto


Existen tres formas principales de incorporar un campo Text a un modelo Odoo, según tu contexto técnico y necesidades de despliegue.

Con Odoo Studio (sin código)

  1. Odoo Studio es la vía más simple para usuarios y consultores que no quieran programar. Pasos básicos:
  2. Abre Odoo Studio desde el menú (requiere la app Studio).
  3. Ve al formulario donde quieres el campo.
  4. Arrastra un campo Multi-Line Text desde la barra lateral hasta la posición deseada en el formulario.
  5. Configura etiqueta, obligatoriedad y valor por defecto en las propiedades del campo.

Guarda y cierra Studio.


Studio crea el campo y actualiza la vista automáticamente con un nombre técnico que empieza por x_studio_, sin necesidad de migraciones ni reinicios de servidor; el campo queda disponible de inmediato.

Mediante Python en un módulo personalizado


Para personalizaciones que deban versionarse y desplegarse en varios entornos, define el campo en código Python. Es la práctica estándar en desarrollo Odoo:

Después de declarar el campo en el archivo del modelo debes añadirlo a la vista XML correspondiente para que aparezca en la interfaz. Al instalar o actualizar el módulo, Odoo crea la columna en la base de datos automáticamente. Este es el método recomendado para entornos de producción.


Vía API XML-RPC

Si gestionas campos programáticamente (por ejemplo, desde un script de despliegue o una herramienta remota), puedes crear campos Text mediante la API XML-RPC:


field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_client_notes',
        'field_description': 'Client Notes',
        'model_id': model_id,
        'ttype': 'text',
        'state': 'manual',
        'translate': False,
        'copy': False,
    }]
)

El parámetro ttype: text indica que se crea un campo Text (frente a char o html). state: manual señala que el campo se creó fuera de un módulo, lo habitual para campos añadidos por Studio o por scripts remotos. Muchas consultoras usan esta ruta para despliegues automatizados.

Buenas prácticas


1. Usa Text solo cuando realmente necesites varias líneas

Un error frecuente es elegir Text cuando bastaría un Char. Si el dato es un nombre, un código o una referencia que cabe en una línea, usa Char. Emplear Text para valores breves genera formularios menos manejables y un modelo de datos menos claro.


2. Elige Html cuando el formato importe

Si el usuario necesita listas, negritas, enlaces o cualquier formato visual, Text no es la solución. En esos casos utiliza Html. Pedir a los usuarios que intenten dar formato manual en un textarea plano suele acabar en frustración y contenido que no se muestra como esperan.


3. Activa translate para contenido multilingüe orientado a usuarios

En empresas con varias lenguas, los campos Text visibles para clientes o en la web deben llevar translate=True. Así los traductores pueden proporcionar versiones por idioma sin pisarse entre sí. Para notas internas normalmente no es necesario traducirlas.


4. Usa copy=False para notas que no deban duplicarse

Al duplicar registros, los campos Text se copian por defecto. Para notas contextuales que no deberían trasladarse al duplicado —como comentarios sobre un incidente puntual— pon copy=False y evita confusiones en registros clonados.


5. Computa y almacena resúmenes con store=True

Puedes crear campos Text computados que concatenen información de otros campos y, con store=True y los decoradores @api.depends(), guardar ese resultado en la base de datos. Así el texto es indexable y buscable, útil para resúmenes internos sin montar un informe complejo.

Errores habituales


Elegir Text cuando necesitas Html

Si el contenido va a mostrarse en la web o en documentos formateados, usar Text en lugar de Html eliminará todo el formato. Los usuarios que peguen contenido con listas o estilos verán un bloque plano sin estructura. Antes de decidir, confirma si el canal de salida requiere formato.


Elegir Text cuando Char sería suficiente

Text se renderiza como un textarea alto y redimensionable; si lo único que vas a guardar es un valor corto como un número de seguimiento o un código de variante, el campo queda sobredimensionado. Los datos de una línea pertenecen a un Char, que mantiene el formulario limpio y proporcional.


Olvidar translate en etiquetas y descripciones multilingües

En despliegues internacionales, no marcar translate=True en un campo Text visible para usuarios de distintos idiomas hará que todos vean el mismo contenido independientemente de su idioma. Esto afecta descripciones de producto y notas de categoría; corregirlo después requiere migraciones cuidadosas para no sobrescribir datos existentes.


Usar Text para datos estructurados

Guardar JSON, valores separados por pipes u otros formatos estructurados en un campo Text es una mala práctica. Si la información tiene estructura, emplea tipos apropiados: Selection para opciones fijas, Many2one para relaciones o un modelo relacionado con sus campos. Encapsular estructura en texto libre impide filtrar, agrupar o reportar con fiabilidad.


No añadir el campo a la vista de búsqueda

Si un campo Text contiene información relevante pero no está presente en la vista de búsqueda, no podrás filtrarla desde la barra de búsqueda de la lista. Los usuarios acabarán recorriendo registros manualmente. Si el contenido se buscará por palabra clave, incorpora el campo en la vista de búsqueda al crearlo.

Conclusión


El campo Text es uno de esos elementos básicos en Odoo que parecen sencillos hasta que empiezas a diseñar formularios serios.


 Acertar entre Char, Text y Html es una de las decisiones iniciales en cualquier proyecto Odoo: tomar la opción correcta desde el principio evita retrabajo y problemas de calidad de datos más adelante.

Ya sea que añadas un campo de notas con Odoo Studio, lo declares en un módulo Python o lo crees vía API, las pautas de esta guía te ayudarán a elegir bien y a configurar el campo de acuerdo con el caso de uso concreto.


Un modelo de datos bien pensado se construye con decisiones pequeñas y precisas. Elegir el tipo de campo correcto para cada pieza de información es una de ellas; usado en el contexto adecuado, el campo Text es una herramienta flexible y fiable para capturar contenido que no encaja en campos estructurados.

En Dasolo acompañamos a empresas en la implantación, personalización y optimización de Odoo en todas las áreas. Si necesitas asesoramiento para diseñar un modelo de datos limpio, crear campos y flujos a medida o desplegar una implementación completa, podemos ayudarte. Contacta con nosotros y hablemos sobre tu proyecto Odoo.

Campo de Texto en Odoo: Guía Completa y Práctica
Dasolo 6 de marzo de 2026
Compartir esta publicación
Iniciar sesión para dejar un comentario