Ir al contenido

Campo Char en Odoo: Guía Completa para Desarrolladores y Usuarios

Guía completa sobre el campo Char en el modelo de datos de Odoo: qué es, cuándo usarlo y cómo personalizarlo técnicamente
6 de marzo de 2026 por
Campo Char en Odoo: Guía Completa para Desarrolladores y Usuarios
Dasolo
| Sin comentarios aún

Introducción


El campo Char es la unidad básica para almacenar texto corto en Odoo: aparece en nombres de contactos, referencias de producto o notas de pedido. Aunque pase desapercibido, es el contenedor habitual de pequeños fragmentos de texto que luego vemos en formularios, listados e impresos.


Saber cómo funciona este tipo de campo es útil tanto si configuras pantallas con Odoo Studio, desarrollas módulos personalizados o asesoras a un cliente. Una decisión correcta aquí evita problemas de datos y de usabilidad más adelante.


Detrás de su apariencia simple hay reglas y opciones que influyen en integridad de datos, búsquedas y traducciones. Esta guía explica qué guarda el campo, cómo se muestra, modos de crearlo y personalizarlo, y ejemplos prácticos para que lo uses bien desde el inicio.

¿Qué es el campo Char en Odoo?


En el ORM de Odoo, un Char almacena cadenas de texto cortas y, según su definición, se materializa en PostgreSQL como una columna VARCHAR con longitud fija o como TEXT cuando no hay límite.


Para el usuario, se presenta como una caja de texto de una sola línea en formularios y como texto plano en las vistas de lista. Es la elección natural para nombres, códigos, referencias e identificadores que encajan en una línea.


Ejemplo en un fichero Python del modelo:

from odoo import fields, models

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

    customer_po_reference = fields.Char(
        string='Customer PO Reference',
        size=64,
        index=True,
    )

El parámetro string define la etiqueta que verá el usuario. size (opcional) restringe la longitud máxima de caracteres. index crea un índice en la base de datos para acelerar búsquedas por ese campo.


En Odoo Studio este tipo aparece como campo "Text (single line)" y las claves técnicas llevan el prefijo automático x_studio_. Si lo creas por código o vía API, eliges tú el nombre técnico del campo.

Cómo funciona este campo


Cuando defines un Char en un módulo, Odoo genera la columna correspondiente en la base de datos al instalar o actualizar el módulo; no suelen ser necesarias migraciones SQL manuales.


Si no fijas size, PostgreSQL guarda el contenido como TEXT; si fijas size, se crea VARCHAR(n). En la práctica, la diferencia es de restricción de longitud más que de rendimiento en la mayoría de escenarios.


Atributos clave del campo

Estas son las propiedades más relevantes de un Char en Odoo:

  • size: longitud máxima de caracteres; si se omite, no hay límite a nivel de BD.
  • translate: si se activa, el valor puede tener traducciones por idioma, útil en instalaciones multilingües.
  • required: obliga a cumplimentar el campo en la interfaz y a nivel de modelo.
  • default: valor por defecto al crear registros nuevos.
  • index: crea índice para búsquedas y filtros más rápidos.
  • compute: enlaza un método Python que calcula el valor dinámicamente, útil para referencias derivadas.
  • store: junto a compute, indica si el resultado se guarda en la BD.
  • copy: controla si el valor se duplica al copiar registros; por defecto es True.

Cómo se muestra en las vistas

In form views, a Char field renders as a standard <input type="text"> element. In list views, it displays as plain text. In search views, it supports filters using contains, equals, and starts-with operators out of the box.


Puedes aplicar widgets para cambiar su presentación: por ejemplo, el widget email convierte el Char en un enlace clicable y url permite abrir el valor en una pestaña nueva del navegador.


Interacción con el ORM de Odoo

Para desarrolladores, leer y escribir un Char es directo: se accede como atributo del registro. El framework aplica validaciones básicas según la definición del campo, sin transformaciones complicadas, lo que hace al Char práctico y predecible en desarrollo diario.

Casos de uso en la empresa


El Char se usa en casi todos los procesos de una implantación Odoo. A continuación, cinco ejemplos concretos sacados de flujos empresariales habituales.


CRM: números de referencia de clientes

Muchas empresas asignan códigos internos a clientes. Un Char en res.partner guarda ese código para búsquedas rápidas desde la lista de clientes y para mostrarse en pedidos y facturas, evitando confusiones cuando hay nombres similares.


Ventas: referencias de pedidos de compra

Cuando un cliente remite un pedido, suele incluir un número PO que debe aparecer en facturas y albaranes. El campo client_order_ref en sale.order es un Char que facilita que esa referencia circule automáticamente a la facturación y reduce los intercambios con el cliente.


Inventario: referencias internas de producto

default_code en product.template es un Char que contiene la referencia interna utilizada en almacenes, escáneres y pedidos. Mantenerlo limpio y consistente es crítico para la calidad de datos en inventario.


Contabilidad: números fiscales y de registro

NIF, CIF, IVA y otros identificadores se almacenan como Char en los partners y se imprimen en facturas y recibos cuando está configurado. Centralizar esa información evita correcciones manuales en empresas que operan en varios países.


RRHH: identificadores de empleados y códigos de acceso

El departamento de RRHH guarda DNI, números de nómina o códigos de acceso en campos Char del empleado para relacionar Odoo con nómina o control de accesos sin necesidad de integraciones complejas desde el principio.

Crear o personalizar un campo Char


Tres maneras principales de añadir un Char según tu entorno técnico y forma de desplegar.


Usando Odoo Studio (sin programación)

Odoo Studio permite añadir campos sin código. Para crear un Char:

  1. Abre Odoo Studio desde el menú principal.
  2. Ve al formulario donde quieres el campo.
  3. Arrastra un campo Text (single line) desde la barra lateral al formulario.
  4. Configura etiqueta, obligatoriedad y opcionalmente el tamaño en las propiedades del campo.
  5. Guarda y cierra Studio.

Studio genera el campo con prefijo x_studio_ y lo añade a la vista; no necesitas gestionar migraciones de base de datos manualmente.


Mediante Python en un módulo personalizado

Para desarrollos mantenibles y controlados por versiones, define el Char en los ficheros Python del módulo:

from odoo import fields, models

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

    x_erp_customer_id = fields.Char(
        string='ERP Customer ID',
        size=32,
        index=True,
        copy=False,
    )

Después añade el campo en la vista XML para que sea visible. Al instalar o actualizar el módulo, Odoo crea la columna en la base de datos automáticamente.


Vía API XML-RPC

Si automatizas la configuración (pipelines, scripts remotos), puedes crear campos con la API XML-RPC:

field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_custom_reference',
        'field_description': 'Custom Reference',
        'model_id': model_id,
        'ttype': 'char',
        'size': 64,
        'state': 'manual',
    }]
)

El estado state:'manual' indica que el campo fue creado manualmente (no por módulo), apropiado para campos generados desde Studio o la API. Es el enfoque que usan algunos equipos para configuraciones automatizadas remotas.

Buenas prácticas


1. Define un tamaño cuando conozcas la longitud máxima

Si el campo guarda códigos ISO, teléfonos o identificadores de longitud fija, establece size. Evitas errores de entrada y de formato: un código de país de dos letras no debe aceptar 500 caracteres.


2. Añade índice en campos que se buscan mucho

Si los usuarios filtran por ese campo con frecuencia, index=True mejora las consultas. En tablas con decenas de miles de registros, un índice puede reducir búsquedas de varios segundos a fracciones de segundo.


3. Usa translate=True para contenidos multilingües

Si la instancia atiende a usuarios en varios idiomas y el campo debe mostrarse en el idioma del usuario (nombres de producto, cargos, etc.), activa la traducción para evitar confusiones en documentos dirigidos a clientes internacionales.


4. Nombra técnicamente los campos con claridad

En módulos personalizados, usa nombres descriptivos como x_customer_erp_id en lugar de x_field1. Si trabajas con Studio, renombra el campo antes de moverlo a producción: cambiar nombres técnicos después de tener datos es complejo.


5. Emplea compute para referencias derivadas

Los Char pueden generarse con lógica: por ejemplo, combinar año y secuencia en un Char calculado. Si pones store=True, el valor se guarda y puede usarse en búsquedas e informes sin recalcular constantemente.

Errores frecuentes


No fijar tamaño facilita la entrada de datos erróneos

Sin límite, un usuario puede pegar párrafos en un campo de referencia; eso causa problemas cuando el valor se imprime o se exporta a sistemas con límites estrictos. Define un tamaño razonable donde importe la longitud.


No indexar campos que se consultan a menudo

Sin índice, filtrar por un Char en tablas grandes obliga a escanear la tabla completa. Muchas organizaciones detectan este cuello de botella cuando la base de datos ya ha crecido: añade índices desde el inicio en campos buscados con regularidad.


Confundir Char con Text

Char es para texto corto en una línea; Text es para contenido multi-línea. Usar Char para direcciones o descripciones largas empeora la experiencia porque no permite saltos de línea ni un editor apropiado. Si puede ser varias frases, usa Text.


Olvidar translate en campos multilingües

Si un campo visible al cliente no es traducible, todos los usuarios verán el mismo valor aunque trabajen en idiomas distintos. Esto provoca incoherencias en documentos que deberían mostrar información localizada.


Usar Char cuando toca una Selection o relación

Si el campo solo puede asumir valores de un conjunto cerrado (estado, categoría, país), usa Selection o Many2one. Un Char libre introduce variaciones y errores tipográficos que rompen agrupaciones y análisis.

Preguntas frecuentes


¿En qué se diferencia un campo Char de un campo Text en Odoo?

Char guarda texto corto en una sola línea y aparece como un input; Text guarda contenido largo y muestra un textarea redimensionable. Usa Char para nombres, códigos y referencias; Text para descripciones o notas extensas.


¿Puedo limitar el número de caracteres de un Char?

Sí. En Python usa fields.Char(size=64). En Studio ajustas la propiedad de tamaño en el panel del campo. Si no fijas size, no hay límite aplicado por la base de datos.


¿Cómo hago que un Char aparezca en la barra de búsqueda?

Add the field to the search view of the model. In Studio, enable the search option in the field properties. In code, add <field name="your_char_field"/> inside the <search> view definition in your XML. Once added, users can filter records by that field directly from the search bar.


¿Puedo guardar números en un Char?

Técnicamente sí, pero no es recomendable para datos que haya que calcular o comparar numéricamente. Usa Integer o Float para cantidades y valores. Char conviene para códigos numéricos tratados como texto: códigos postales, teléfonos, IBAN o números de serie.


¿Cómo crear un Char calculado que además almacene su valor?

Decláralo con compute='_compute_my_field' y store=True, y escribe el método compute con @api.depends() indicando de qué campos depende. Con store=True, el resultado se guarda en la BD y puede usarse en búsquedas y exportaciones sin recalcular en cada lectura.

Conclusión


Aunque parece sencillo, el Char está presente en decenas de puntos de Odoo y una definición inadecuada puede generar problemas de calidad y uso. Conocer sus opciones y límites marca la diferencia en la robustez del modelo de datos.


Ya sea creando un campo desde Studio, definiéndolo en un módulo Python o generándolo por API, aplicar estas pautas te ayuda a hacerlo bien a la primera y evitar refactorizaciones costosas.


Un modelo de datos bien pensado, con tipos de campo adecuados, es la base de una implantación Odoo exitosa. El Char es una pieza pequeña pero clave de ese rompecabezas; entenderlo evita muchos dolores de cabeza futuros.

En Dasolo acompañamos a empresas en la implantación, personalización y optimización de Odoo en todos los departamentos. Si necesitas diseñar un modelo de datos limpio, añadir campos personalizados o desarrollar un módulo completo, podemos ayudarte. Contacta con nosotros y conversemos sobre tu proyecto Odoo.

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