Saltar la navegación

Campos básicos

El fichero models.py

Dentro de este fichero podemos definir nuestros objetos de negocio. También es posible tener un fichero por cada objeto de negocio que necesitemos. Debemos tener precaución a la hora de crearlo para saber como acceder a él posteriormente (con el namespace correcto)
El ORM de Odoo utiliza acceso jerárquico a los objetos, precediendo el nombre del módulo al objeto. Así por ejemplo tendremos:
  • purchase.order: orden de compra
  • account.invoice: factura
  • sale.order: orden de venta
Los objetos
Todos los objetos que definamos extienden models.Model. 
from odoo import models, fields

class AModel(models.Model):

    _name = 'a.model.name'

    field1 = fields.Char()
_name (obligatorio)
Nombre del objeto de negocio en notación punto (es decir, con namespaces). Es decir, la tabla que se va a crear
_inherit
Utilizado para heredar de un modelo. Lo veremos en detalle con posterioridad al estudiar los distintos tipos de herencia
fields
Propiedades del objeto de negocio. 
Por defecto, la etiqueta visible un campo será su nombre con letra capital pero se puede especificar otra con el parámetro string.
field2 = fields.Integer(string=’an other field’)
El valor por defecto de un campo se pasan como parámetro en el fields
a_field = fields.Char(default=’a value’)
Un field también puede llamar a una función para calcular su valor.
a_field = fields.Char(default=compute_default_value)

def compute_default_value(self):

return self.get_value()
Se pueden consultar todas las propiedades de un objeto en la sección Model Reference. 
Los campos. Fields.
Podemos utilizar los siguientes parámetros al definirlos:
  • string: la etiqueta de campo que verá el usuario. Por defecto, el nombre del campo tipo Título.
  • help: popup que se mostrará al usuario
  • readonly: indica si es un campo de solo lectura. Por defecto False.
  • required: indica si es un campo obligatorio. Por defecto False.
  • default: indica el valor por defecto que debe tener el campo.
Respecto al tipo de datos que puede tener un Field puede ser Char, Boolean, Integer, Float, Text, Selection, Html, Date, Datetime. También dispone de campos relacionales que veremos en el siguiente apartado. Todos los tipos posibles para fields y sus parámetros en Fields Reference
 
Por defecto, Odoo creará unos campos automáticamente en cada modelo: id (field), log_access, create_date (datetime), create_uid(res.users), write_date (datetime), write_uid (res.users)
Un ejemplo de definición de un modelo sería:
class discografica(models.Model):
    _name = 'discografica.disco'
    _description = 'discografica.disco'

    name = fields.Char(string='Título del disco',help='Título',required=True)
    year = fields.Char(string='Año',help='Año',size=4)
    genre = fields.Char(string='Género',help='Género')
    artist = fields.Char(string='Grupo/Banda',help='Grupo')
    cover = fields.Binary()    # Versión 14 y anteriores de Odoo
cover = fields.Image(max_width=200, max_height=200)  # Versiones posteriores a la 14
Alexandre Ibáñez López. Tipos de campos básicos (CC BY-NC-SA)

Para saber más

En la documentación oficial de Odoo v16 puedes encontrar más información y todas las propiedades de los campos básicos. Es conveniente que te acostumbres a consultarla para saber cómo realizar ciertas acciones.

Documentación oficial de campos básicos

Tarea

Duración:
00:45
Agrupamiento:
1

En esta tarea vamos a continuar con nuestro módulo citas. Vamos a comenzar a crear algunos modelos con unos pocos campos básicos.

En este módulo de citas, se podrá solicitar una cita para uno de los servicios disponibles. Por ejemplo, podríamos tener un servicio que sea matrícula y otro que sea otros trámites. Por tanto, vamos a necesitar tener dos modelos con los siguiente campos - por ahora:

  • servicio, con los campos nombre y descripción. 
  • citas, con los campos fecha, horario y datos de contacto (nombre, email y teléfono).

El campo horario, de momento lo estableceremos como un campo selection con valores que van desde las 9 hasta las 13h horas en periodos de 30minutos.

Crea los modelos anteriores y establece los valores apropiados en el __manifest__.py. Trata de establecer todas las propiedades posibles para estos campos (required, string, help...)

Creado con eXeLearning (Ventana nueva)