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.0Este 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-03Estado de confirmación: 5 confirmadas, 4 sin información de 9 versiones.
Fuentes · Odoo 16.0
Confirmado el 2026-11-03 en la rama 16.0 de OCA/rest-framework.
terminal Instalación y uso
Documentación de OCA · Odoo 16.0Para 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):
passLos 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_infoEl 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.
Las instrucciones de instalación, el paquete de distribución, las dependencias y los pasos de configuración no se muestran porque todavía no se han verificado en la documentación del módulo para ninguna versión.
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.