En este momento estás viendo Tipos de campos en Odoo

Tipos de campos en Odoo

En este artículo vamos a ver los diferentes tipos de campos que podemos usar en Odoo para definir nuestros modelos de datos. Los campos son los elementos básicos que almacenan la información de cada registro y determinan cómo se muestra y se valida en la interfaz de usuario.

Odoo nos ofrece una gran variedad de tipos de campos para adaptarse a las necesidades de cada caso. Algunos de los más comunes son:

  • Boolean: un campo que puede tener dos valores: verdadero o falso. Se representa con una casilla de verificación en la interfaz. Por ejemplo, un campo activo que indica si un registro está activo o no.
  • Char: un campo que almacena una cadena de caracteres de longitud variable. Se representa con un cuadro de texto en la interfaz. Por ejemplo, un campo nombre que almacena el nombre de una persona o una empresa.
  • Integer: un campo que almacena un número entero, es decir, sin decimales. Se representa con un cuadro de texto numérico en la interfaz. Por ejemplo, un campo edad que almacena la edad de una persona.
  • Float: un campo que almacena un número real, es decir, con decimales. Se representa con un cuadro de texto numérico con separador decimal en la interfaz. Por ejemplo, un campo precio que almacena el precio de un producto.
  • Date: un campo que almacena una fecha, sin hora. Se representa con un selector de fecha en la interfaz. Por ejemplo, un campo fecha_nacimiento que almacena la fecha de nacimiento de una persona.
  • Binary: un campo que almacena un archivo binario, como una imagen o un documento. Se representa con un botón para subir o descargar el archivo en la interfaz. Por ejemplo, un campo imagen que almacena la imagen de un producto.
  • Selection: un campo que almacena uno de los valores predefinidos en una lista. Se representa con un menú desplegable o con botones de opción en la interfaz. Por ejemplo, un campo estado que almacena el estado de una tarea (por hacer, en progreso, terminada).
  • Text: un campo que almacena una cadena de caracteres de longitud ilimitada. Se representa con un área de texto en la interfaz. Por ejemplo, un campo descripción que almacena la descripción de un producto.
  • Html: un campo que almacena una cadena de caracteres con formato HTML. Se representa con un editor HTML en la interfaz. Por ejemplo, un campo contenido que almacena el contenido de una página web.

Estos son solo algunos ejemplos de los tipos de campos disponibles en Odoo. Hay muchos más tipos de campos que podemos usar para definir relaciones entre modelos, campos calculados, campos relacionados, etc.

Para crear un campo en Odoo, debemos definirlo en el archivo Python del modelo correspondiente, usando la clase fields del módulo odoo.fields. La sintaxis general es la siguiente:

nombre_campo = fields.Tipo_de_campo (atributos)

Donde nombre_campo es el nombre del campo que queremos crear, Tipo_de_campo es el tipo de campo que queremos usar y atributos son las opciones adicionales que queremos especificar para el campo, como el valor por defecto, el nombre a mostrar, la función a usar para calcular el valor, etc.

Veamos algunos ejemplos de código para crear campos en Odoo:

Un campo booleano llamado activo con valor por defecto verdadero

activo = fields.Boolean (default=True)

Un campo char llamado nombre con 50 caracteres como máximo y obligatorio

nombre = fields.Char (size=50, required=True)

Un campo integer llamado edad con valor mínimo 18 y máximo 99

edad = fields.Integer (min=18, max=99)

Un campo float llamado precio con dos decimales y el símbolo del euro

precio = fields.Float (digits=(12,2), currency_field='EUR')

Un campo date llamado fecha_nacimiento con valor por defecto el día actual

fecha_nacimiento = fields.Date (default=fields.Date.today)

Un campo binary llamado imagen con el nombre a mostrar ‘Foto’

imagen = fields.Binary (string='Foto')

Un campo selection llamado estado con tres valores posibles y el primero como valor por defecto

estado = fields.Selection ([('por_hacer', 'Por hacer'), ('en_progreso', 'En progreso'), ('terminada', 'Terminada')], default='por_hacer')

Un campo text llamado descripción con el nombre a mostrar ‘Descripción detallada’

descripción = fields.Text (string='Descripción detallada')

Un campo html llamado contenido con el nombre a mostrar ‘Contenido HTML’

contenido = fields.Html (string='Contenido HTML')