Ir al contenido

Campo de Texto en Odoo: Guía Completa

Todo lo que necesitas saber sobre el campo de texto en el modelo de datos de Odoo, desde el uso básico hasta la personalización técnica
6 de marzo de 2026 por
Campo de Texto en Odoo: Guía Completa
Dasolo
| Sin comentarios aún

Introducción


El campo de texto es uno de los tipos de campo más prácticos en Odoo. Cada vez que un usuario llena un área de notas, escribe una descripción de producto o añade un comentario interno en un pedido de venta, hay una buena probabilidad de que esté escribiendo en un campo de texto.


Se ve como un área de texto simple en la interfaz, pero entender sus propiedades y cómo encaja en el modelo de datos de Odoo y en el ORM hace una gran diferencia cuando estás diseñando formularios, construyendo módulos personalizados o configurando campos de Odoo Studio para tu equipo.

Esta guía cubre todo, desde lo que almacena el campo de texto y cómo se comporta, hasta casos de uso empresarial reales, personalización técnica, mejores prácticas y los errores que la mayoría de las personas cometen al utilizar este tipo de campo.

¿Qué es el campo de texto en Odoo?


En el ORM de Odoo, fields.Text es el tipo de campo para almacenar texto plano de varias líneas. Se mapea a una columna TEXT en PostgreSQL, sin restricción de longitud. Los usuarios pueden escribir una sola oración o varios párrafos, y el campo lo maneja igualmente bien.


En los formularios, se representa como un elemento <textarea> redimensionable. En las vistas de lista, aparece como texto plano truncado. En las vistas de búsqueda, admite filtrado basado en texto al igual que el campo Char.


Aquí está lo que una definición básica de campo Text parece en un módulo de Python:

from odoo import fields, models

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

    internal_notes = fields.Text(
        string='Notas Internas',
        translate=False,
    )

En Odoo Studio, este campo se llama Texto de Múltiples Líneas. Cuando se crea a través de Studio, Odoo le asigna automáticamente un prefijo x_studio_. Cuando lo creas a través de código o la API XML-RPC, defines el nombre técnico tú mismo.


Cómo se Diferencia de Char y Html

Tres tipos de campos en Odoo pueden almacenar contenido de texto, y saber cuándo usar cuál es un punto común de confusión:


  • Campo Char: Entrada de texto de una sola línea. Mejor para valores cortos como nombres, códigos y referencias. Admite un límite de tamaño opcional.
  • Campo Text: Área de texto de múltiples líneas. Mejor para notas, descripciones y comentarios en formato libre. Almacena texto plano sin formato.
  • Campo Html: Editor de texto enriquecido de múltiples líneas. Mejor para contenido donde el formato importa, como plantillas de correo electrónico, descripciones web de productos o páginas de sitios web. Almacena marcado HTML.

El campo Text se sitúa entre los dos. Ofrece a los usuarios más espacio que un campo Char, pero sin la complejidad del marcado HTML. Para la mayoría de las notas internas y descripciones simples, es la opción correcta en el modelo de datos de Odoo.

Cómo funciona el campo


Cuando agregas un campo Text a un modelo de Odoo, el marco crea automáticamente la columna correspondiente TEXT en PostgreSQL durante la instalación o actualización del módulo. No hay migraciones SQL manuales involucradas.


A diferencia del campo Char, no hay un parámetro size disponible en los campos Text. La columna de la base de datos no impone ningún límite de caracteres. Esto es intencional: los campos Text están destinados a contenido abierto donde limitar la longitud de antemano no tendría sentido.


Atributos Clave del Campo

Las propiedades más importantes de un campo de Texto en el marco de Odoo:


  • traducir: Cuando se establece en True, el valor del campo puede ser traducido por idioma. Útil para instancias multilingües de Odoo donde el texto cambia dependiendo del idioma del usuario.
  • requerido: Hace que el campo sea obligatorio a nivel de interfaz y ORM. Los usuarios no pueden guardar un registro sin completarlo.
  • predeterminado: Establece un valor predeterminado automático cuando se crean nuevos registros. Puede ser una cadena estática o un método llamable.
  • calcular: Vincula un método de Python que genera el valor del campo dinámicamente. Útil para resúmenes generados automáticamente o contenido derivado.
  • almacenar: Cuando se combina con calcular, controla si el valor calculado se guarda en la base de datos. Con almacenar=True, el valor es buscable y está disponible en informes.
  • copiar: Controla si el valor del campo se incluye al duplicar un registro. Por defecto es True. Establecer en False para notas que no deben trasladarse a duplicados.
  • índice: No se utiliza comúnmente en campos de Texto ya que la indexación de texto completo funciona de manera diferente al índice B-tree simple utilizado para campos Char. Para contenido buscable, la búsqueda de texto completo de PostgreSQL o el filtrado integrado de Odoo son generalmente suficientes.

Cómo Aparece en las Vistas

En las vistas de formulario, el campo de Texto se renderiza como un <textarea> que los usuarios pueden redimensionar verticalmente. En las vistas de lista, el contenido se trunca para ajustarse al ancho de la columna. En las vistas de búsqueda, admite filtros de búsqueda basados en texto de forma predeterminada una vez que lo agregas a la definición de la vista de búsqueda.


A diferencia de los campos Html, el campo de Texto no carga un editor WYSIWYG. Los usuarios ven un área de texto plano sin barra de herramientas de formato. Lo que escriben es exactamente lo que se almacena en la base de datos, con los saltos de línea preservados.


Interacción con el ORM de Odoo

Desde la perspectiva de un desarrollador, leer y escribir campos de Texto en el desarrollo de Odoo es sencillo. Accedes al valor directamente en el objeto de registro, y el ORM se encarga de toda la persistencia. Los saltos de línea se almacenan tal cual. No se aplica ninguna sanitización o escape automático a los campos de Texto simples, que es una de las razones por las que se distingue del campo Html, donde Odoo aplica sanitización para prevenir problemas de XSS.

Casos de uso empresarial


Los campos de Texto aparecen en todo Odoo en lugares donde los usuarios necesitan escribir más de una línea. Aquí hay cinco ejemplos concretos de flujos de trabajo empresariales reales.


Ventas: Notas Internas de Pedido

El campo note en los pedidos de venta y el campo internal_note utilizado en algunas implementaciones son campos de Texto. Los representantes de ventas los utilizan para registrar instrucciones de entrega, requisitos de empaquetado especiales o preferencias del cliente que no encajan perfectamente en un campo estructurado. Estas notas viajan con el pedido y son visibles para los equipos de operaciones sin ser impresas en los documentos del cliente.


Inventario: Notas Internas del Producto

En el formulario del producto, Odoo proporciona una pestaña de Notas con un campo de Texto para comentarios internos. Los equipos de almacén utilizan esto para documentar instrucciones de manejo, advertencias de fragilidad o información específica del proveedor. Dado que es texto plano y no se muestra en el sitio web ni en los documentos del cliente, es seguro escribir detalles operativos que las partes externas no deberían ver.


Compras: Términos del Proveedor e Instrucciones de Entrega

En los pedidos de compra, un campo de Texto para notas del proveedor permite a los equipos de adquisiciones documentar acuerdos específicos o restricciones de entrega que se confirmaron por correo electrónico o teléfono. Tener esta información adjunta al registro del pedido previene malentendidos cuando los bienes llegan y la conversación original ya no es fácil de encontrar.


CRM: Resúmenes de Oportunidades y Notas de Reuniones

Los equipos de ventas que trabajan a través del pipeline de CRM a menudo añaden un campo de Texto a los registros de oportunidades para notas libres de reuniones con clientes, objeciones planteadas o contexto sobre el proceso de compra. A diferencia de los mensajes de chatter, un campo de Texto dedicado mantiene esta información estructurada y fácil de leer de un vistazo cuando alguien más toma el lead.


RRHH: Comentarios de Empleados y Solicitantes

Los equipos de RRHH a menudo necesitan capturar notas de entrevistas, comentarios sobre la incorporación o observaciones de rendimiento en un campo que permanezca adjunto al registro del empleado o solicitante. Un campo de texto en el modelo de empleado es una forma limpia y simple de almacenar esto sin crear un modelo separado. Es buscable, imprimible y fácil de incluir en informes personalizados de RRHH.

Creando o personalizando el campo de texto


Hay tres formas principales de agregar un campo de texto a un modelo de Odoo, dependiendo de su contexto técnico y enfoque de implementación.


Usando Odoo Studio (Sin Código)

Odoo Studio es la ruta más fácil para los usuarios de negocios y consultores que no quieren escribir código. Para agregar un campo de texto sin trabajo de desarrollo:

  1. Abre Odoo Studio desde el menú principal (requiere la aplicación Studio).
  2. Navega hasta el formulario donde deseas el campo.
  3. Arrastra un campo de Texto de Múltiples Líneas desde la barra lateral de Studio al formulario.
  4. Establece la etiqueta, el estado requerido y cualquier valor predeterminado en el panel de propiedades del campo.
  5. Guarda y cierra Studio.

Studio maneja la creación del campo y la actualización de la vista automáticamente. El campo recibe un prefijo x_studio_ y está disponible de inmediato en el formulario sin ninguna migración de base de datos o reinicio del servidor.


Usando Python en un Módulo Personalizado

Para cualquier personalización que necesite ser controlada por versiones y desplegada en múltiples entornos, definir el campo en Python es el enfoque correcto. Esta es la práctica estándar de desarrollo en Odoo:


from odoo import fields, models

class ResPartner(models.Model):
    _inherit = 'res.partner'

    x_client_notes = fields.Text(
        string='Notas del Cliente',
        translate=False,
        copy=False,
    )

Después de definir el campo en el archivo del modelo, necesitas agregarlo a la vista XML relevante para que aparezca en la interfaz. Odoo crea automáticamente la columna de la base de datos cuando instalas o actualizas el módulo. Este es el enfoque recomendado para cualquier personalización de Odoo en producción que necesite ser mantenida a lo largo del tiempo.


Usando la API XML-RPC

Si estás gestionando campos de Odoo programáticamente, por ejemplo, como parte de un script de implementación o un cuaderno de configuración remota, puedes crear campos de texto a través de 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': 'Notas del Cliente',
        'model_id': model_id,
        'ttype': 'text',
        'state': 'manual',
        'translate': False,
        'copy': False,
    }]
)

El valor ttype: text le indica a Odoo que cree un campo de texto (en oposición a char para un campo de carácter o html para un campo HTML). La configuración state: manual indica que este campo fue creado fuera de un módulo, lo cual es correcto para campos creados a través de Studio o programáticamente a través de la API. Este es el enfoque que utiliza Dasolo al implementar configuraciones de campo remotas para clientes.

Mejores prácticas


1. Usa Texto cuando el contenido realmente necesite múltiples líneas

El error más común es recurrir a un campo de Texto cuando un campo de Carácter sería suficiente. Si el valor es un nombre, un código, una referencia o cualquier cosa que quepa en una línea, usa Carácter. Reserva Texto para contenido donde se espera que los usuarios escriban oraciones o párrafos. Usar un campo de Texto para una entrada corta de un solo valor crea una experiencia de usuario torpe y un modelo de datos engañoso.


2. Usa HTML cuando el formato importa

Si los usuarios necesitan agregar listas con viñetas, texto en negrita, hipervínculos o cualquier formato visual al contenido, el campo de Texto es la elección incorrecta. Usa un campo HTML en su lugar. Los campos de Texto solo admiten texto sin formato. Pedir a los usuarios que escriban contenido formateado en un área de texto simple llevará a usuarios frustrados que esperan opciones de formato que no están disponibles.


3. Habilita la traducción para contenido multilingüe orientado al usuario

En empresas que ejecutan Odoo en múltiples idiomas, cualquier campo de Texto que aparezca en documentos orientados al cliente o en el sitio web debe tener translate=True. Esto permite a los traductores proporcionar versiones específicas del contenido sin sobrescribir el trabajo de los demás. Para notas internas y comentarios operativos que los usuarios escriben por sí mismos, la traducción generalmente no es necesaria.


4. Establecer copy=False para notas que no deben duplicarse

Cuando los usuarios duplican un pedido de venta o un producto, los campos de texto se copian por defecto. Para notas que capturan contexto específico del registro original, como una conversación con un cliente o un problema de entrega específico, esto puede crear confusión. Establezca copy=False en esos campos para que los registros duplicados comiencen con una sección de notas limpia.


5. Utilizar compute con store=True para resúmenes autogenerados

Los campos de texto se pueden calcular dinámicamente en Odoo. Un patrón útil es construir un campo de resumen autogenerado que concatene valores de otros campos en el registro. Con store=True y los apropiados @api.depends() disparadores, el texto calculado se guarda en la base de datos y se vuelve buscable en vistas de lista y filtros. Esta es una técnica práctica de campos calculados en Odoo para crear resúmenes internos ligeros sin construir un informe separado.

Errores comunes


Elegir Texto cuando se necesita Html

Si un campo está destinado a contener contenido que se mostrará en el sitio web o en un informe PDF formateado, usar Texto en lugar de Html eliminará todo el formato. Los usuarios que peguen contenido con viñetas o texto en negrita en un campo de Texto lo verán renderizado como prosa plana y sin formato. Siempre pregunte si el canal de salida necesita formato antes de elegir el tipo de campo.


Elegir Texto cuando Char es la opción adecuada

Un campo de Texto se renderiza como un área de texto alta y redimensionable. Si un campo solo va a contener un valor corto como un número de seguimiento o un código de variante de producto, usar Texto hace que el formulario sea innecesariamente voluminoso. El contenido de una sola línea pertenece a un campo Char, que se renderiza como una entrada de texto compacta que encaja naturalmente en un diseño de formulario.


Olvidar traducir etiquetas y descripciones multilingües

En instancias de Odoo desplegadas en múltiples países, faltar el atributo translate=True en un campo de Texto visible para el usuario significa que todos los usuarios ven el mismo valor independientemente de su configuración de idioma. Esto es especialmente problemático para descripciones de productos y notas de categorías que son visibles en la interfaz. La solución es sencilla, pero agregarla después de que los datos ya están en el sistema requiere una migración cuidadosa para evitar sobrescribir valores existentes.


Usar Texto para datos estructurados

Un campo de Texto que almacena JSON, valores separados por tuberías u otros formatos estructurados hechos a mano es un problema de mantenimiento que está por suceder. Si los datos tienen una estructura consistente, deben almacenarse en los tipos de campo apropiados de Odoo: Selección para opciones fijas, Many2one para relaciones, o un modelo relacionado con campos adecuados. Codificar la estructura dentro de un campo de texto libre hace que sea imposible filtrar, agrupar o informar sobre los datos de manera confiable.


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

Un campo de texto que contiene información importante pero no está incluido en la vista de búsqueda del modelo no puede ser filtrado desde la barra de búsqueda de la vista de lista. Los usuarios terminan desplazándose por los registros para encontrar lo que necesitan en lugar de simplemente escribir una palabra clave. Si un campo de texto almacena información por la que los usuarios querrán buscar, añádelo a la definición de la vista de búsqueda al crear el campo.

Conclusión


El campo de texto es uno de esos bloques de construcción en el marco de Odoo que parece poco notable hasta que comienzas a diseñar formularios en serio.


 Elegir entre Char, Text y Html es una de las primeras decisiones que enfrentas en cualquier proyecto de personalización de Odoo, y acertar desde el principio evita retrabajos y problemas de calidad de datos más adelante.

Ya sea que estés añadiendo un campo de notas a través de Odoo Studio, definiéndolo en un módulo de Python o creándolo programáticamente a través de la API, los patrones en esta guía te ayudarán a tomar la decisión correcta y configurar el campo adecuadamente para tu caso de uso.


Un modelo de datos de Odoo bien diseñado se basa en decisiones pequeñas y bien elegidas. Elegir el tipo de campo correcto para cada pieza de información es una de ellas, y el campo de texto, utilizado en el contexto adecuado, es una herramienta fiable y flexible para capturar el tipo de contenido que no encaja perfectamente en campos estructurados.

En Dasolo, ayudamos a las empresas a implementar, personalizar y optimizar Odoo en todos los departamentos. Ya sea que necesites ayuda para diseñar un modelo de datos limpio, construir campos y flujos de trabajo personalizados, o configurar una implementación completa de Odoo desde cero, nuestro equipo está aquí para apoyarte. Ponte en contacto y hablemos sobre tu proyecto de Odoo.

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