1.- Campos básicos

Boolean

Tipo de campo que solo admite dos posibles valores y cuyos se excluyen el uno del otro.


boolean_field = fields.Boolean()
  

Char

Tipo de campo formado por una cadena de longitud limitada, que se puede ajustar a través de parámetros.


char_field = fields.Char()
  

Opciones especificas:

Size: Determina el número máximo de caracteres. Translate: El campo puede ser traducido.

Text

Tipo de campo usado para almacenar textos largos.


text_field = fields.Text()
  

HTML

Tipo de campo que almacena HTML, proporciona un visor HTML


html_field = fields.Html()
  

Integer

Tipo de campo que guarda valores numéricos enteros. Si el valor no está establecido, este devuelve 0.


int_field = fields.Integer()
  

Float

Tipo de campo que almacena valores decimales. Si el valor no está establecido este devuelve 0,0. Si se establece la opción de dígitos, usará el tipo numérico:


float_field = fields.Float()
float_field = fields.Float(digits=(32, 32))
float_field = fields.Float(digits=lambda cr: (32, 32))
  

Opciones especificas:

Digits: Fuerza el uso de tipo numérico en la base de datos. El parámetro puede ser una tupla (longitud parte en entera, longitud parte decimal) o una llamada que devuelve una tupla y coge el cursor como parámetro.

Date

Tipo de campo que permite almacenar fechas.


date_field = fields.Date()
  

Opciones especificas:

context_today: Devuelve la fecha del día actual, está basado en la zona horaria. today: Devuelve la fecha actual en formato cadena. from_string: Devuelve el valor datetime.date() en tipo cadena. to_string: Retorna el valor de la función datetime.date en formato cadena.

Datetime

Tipo de campo que almacena valores de tipo fecha y hora.


datetime_field = fields.Datetime()
  

Opciones especificas:

context_timestamp: Devuelve la fecha y hora actual, basado en el formato de zona horaria. Now: Devuelve la fecha y hora actual del sistema. from_string: Devuelve el valor datetime.date() en tipo cadena. To_string: Devuelve el valor de la función datetime.date en formato cadena.

Binary

Tipo de campo que almacena valores codificados en base64.


binary_field = fields.Binary()
  

Selection

Tipo de campo que almacena un texto en la base de datos, que permite al usuario hacer una selección entre varios valores predefinidos. La selección se puede establecer como una lista de tuplas o una llamada que devuelva una lista de tuplas.


selection_field = fields.Selection([('a', 'A')])
selection_field = fields.Selection(selection=[('a', 'A')])
selection_field = fields.Selection(selection='a_function_name')
  

Opciones especificas:

Selection: Lista de tuplas o una función que retorna una lista de tuplas. Size: La opción size=1 es obligatoria cuando se está usando indices que son enteros y no cadenas

Reference

Tipo de campo que almacena una referencia arbitraria de un modelo y una fila.


refence_field = fields.Reference([('model_name', 'usantString')])
refence_field = fields.Reference(selection=[('model_name', 'String')])
refence_field = fields.Reference(selection='a_function_name')
  

Opciones especificas:

selection: Una lista de tuplas o llamada que coge un grupo de registros como entrada.

2.- Tipos de relación

Many2one

Tipo de campo que almacena una relación de muchos (n) a uno (1).


field_id = fields.Many2one('res.users') 
field_id = fields.Many2one(comodel_name='res.users')
  

Opciones especificas:

comodel_name: Nombre del model opuesto.

One2Many

Tipo de campo que almacena una relación de uno (1) a muchos (m).


field_ids = fields.One2many('res.users', 'rel_id')
field_ids = fields.One2many(comodel_name='res.users',inverse_name='rel_id')
  

Opciones especificas:

comodel_name: Nombre del modelo opuesto. inverse_name: Relaciona la columna del modelo opuesto.

Many2many

Tipo de campo que almacena una relación de muchos (m) a muchos (n), se crea una nueva tabla con las claves primarias de ambos.


field_ids = fields.Many2many('res.users')
field_ids = fields.Many2many(comodel_name='res.users',relation='table_name',column1='col_name',column2='other_col_name')
  

Opciones especificas:

comodel_name: nombre del modelo opuesto. relation: nombre de la tabla relacionada. column1: nombre de la columna que proviene del identificador de la tabla de la izquierda de la relación. column2: nombre de la columna que proviene del identificador de la tabla de la derecha de la relación.

3.- Campos funcionales

Campos Calculados

Para la definición solo es necesario el atributo compute y el nombre del método del que obtendrá el resultado.


computed_field = fields.Float(compute='compute_total')

def compute_total(self):
    ...
    self.computed_total = x
  

Campos relacionados

Simplemente establece el argumento del nombre relacionado con su modelo.


rel_field = fields.Char(string='Name',related='partner_id.name')
  

El parámetro store nos permite almacenar el valor en la base de datos.


rel_field = fields.Char(string='Name',store=True, related='partner_id.name')
  

Property field

Hay algunos casos donde el valor del campo debe cambiar dependiendo de la compañía activa del usuario. Para activar dicho comportamiento, se puede usar la opción company_depent (aka property field).