OdooWiki OCA HUB
Sin categoría Licencia: LGPL-3

Este complemento permite definir modelos de datos simples que admiten serialización/deserialización a/desde json

Los modelos de datos son clases de modelos de Marshmallow que se pueden heredar como modelos de Odoo.

Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.

auto_awesome Qué hace este módulo

Generado por IA a partir del código · Odoo 16.0

Este módulo permite a los desarrolladores definir modelos de datos simples dentro de Odoo que se pueden convertir a y desde JSON. Es una base técnica para construir REST APIs e intercambios de datos, no una funcionalidad basada en pantallas para usuarios finales.

Este módulo añade una capa técnica que permite a los desarrolladores declarar modelos de datos ligeros directamente en el código de Odoo. Estos modelos no son tablas de base de datos; se utilizan para describir la forma de los datos que se envían o reciben, por ejemplo en formato JSON.

  • Un builder se ejecuta automáticamente cuando Odoo carga, escaneando los módulos instalados y registrando cada modelo de datos declarado en un registro global.
  • Los modelos de datos admiten herencia similar a los modelos de Odoo: un modelo puede extender uno existente o crear uno nuevo basado en otro.
  • La validación y la conversión hacia/desde JSON se gestionan mediante esquemas, incluidos los modelos de datos anidados.
  • Un tipo de campo anidado especial permite que un modelo de datos contenga otro, y resuelve el modelo anidado automáticamente.
  • El entorno se adjunta a cada modelo de datos para que pueda acceder a los datos de Odoo cuando sea necesario.

No hay menús, botones ni informes. El módulo toca el modelo abstracto datamodel.builder y el modelo de datos base, y extiende el entorno de Odoo con un accesor datamodels. Depende de las librerías de Python marshmallow y marshmallow-objects. Debido a que es una herramienta para desarrolladores, los usuarios de negocio no verán cambios directos en la interfaz; está pensado para ser utilizado por otros módulos que necesiten un manejo estructurado de datos.

Lo necesitan otros módulos

Modelos y campos (2)
  • base · modelo nuevo
  • datamodel.builder · modelo nuevo

Texto generado por IA (DeepSeek) al leer el código de la versión 16.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. Ver el código en GitHub

Disponibilidad por versión

Revisado: 2026-11-03
Confirmado (verificado en repositorio y rama) Estimado (sin verificar) Sin información

Estado de confirmación: 5 confirmadas, 4 sin información de 9 versiones.

Fuentes · Odoo 13.0

Confirmado el 2026-11-03 en la rama 13.0 de OCA/rest-framework.

terminal Instalación y uso

Documentación de OCA · Odoo 16.0

Para definir tu propio datamodel solo necesitas crear una clase que herede de odoo.addons.datamodel.core.Datamodel

from marshmallow import fields

from odoo.addons.base_rest import restapi
from odoo.addons.component.core import Component
from odoo.addons.datamodel.core import Datamodel


class PartnerShortInfo(Datamodel):
    _name = "partner.short.info"

    id = fields.Integer(required=True, allow_none=False)
    name = fields.String(required=True, allow_none=False)

class PartnerInfo(Datamodel):
    _name = "partner.info"
    _inherit = "partner.short.info"

    street = fields.String(required=True, allow_none=False)
    street2 = fields.String(required=False, allow_none=True)
    zip_code = fields.String(required=True, allow_none=False)
    city = fields.String(required=True, allow_none=False)
    phone = fields.String(required=False, allow_none=True)
    is_componay = fields.Boolean(required=False, allow_none=False)

Al igual que con los modelos de odoo, puedes extender el datamodel base heredando de base.

class Base(Datamodel):
    _inherit = "base"

    def _my_method(self):
        pass

Los datamodels están disponibles a través del registro datamodels proporcionado por el entorno de Odoo.

class ResPartner(Model):
    _inherit = "res.partner"

    def _to_partner_info(self):
        PartnerInfo = self.env.datamodels["partner.info"]
        partner_info = PartnerInfo(partial=True)
        partner_info.id = partner.id
        partner_info.name = partner.name
        partner_info.street = partner.street
        partner_info.street2 = partner.street2
        partner_info.zip_code = partner.zip
        partner_info.city = partner.city
        partner_info.phone = partner.phone
        partner_info.is_company = partner.is_company
        return partner_info

El entorno de Odoo también está disponible dentro de la instancia del datamodel.

class MyDataModel(Datamodel):
    _name = "my.data.model"

    def _my_method(self):
        partners = self.env["res.partner"].search([])

La propiedad env dentro de una instancia de Datamodel es mutable. En otras palabras, no puedes confiar en la información (contexto, usuario) proporcionada por el entorno. La propiedad env es una propiedad auxiliar que te da acceso al registro de odoo y debe usarse con precaución.

Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Instalación, Configuración.

info

Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.