用于规范驱动的混合工具(例如从xsd)
项目描述
简介
此模块是Odoo和XML数据的数据绑定框架:它允许从XML到Odoo对象以及反向转换。此模块从GenerateDS纯Python数据绑定框架开始,现在正在迁移到xsdata。因此,一个好的起点是阅读这里的xsdata文档
但如果除了从XML文件生成Python结构之外,您还能实际生成完整的Odoo对象或将Odoo对象反序列化为XML,那会怎么样?这正是此模块的作用!
首先,您应该为您的特定XSD语法生成xsdata Python绑定库,例如巴西电子发票或UBL。
其次,您应该为所有这些纯Python绑定生成Odoo抽象混合。这可以通过使用xsdata-odoo实现。例如,对于巴西电子发票,有OCA/l10n-brazil/l10n_br_nfe_spec。
SpecModel
现在您已经生成了这些Odoo抽象绑定,您应该告诉Odoo如何使用它们。例如,您可能希望您的电子发票抽象模型与Odoo res.partner 对象匹配。这相当简单,您主要需要定义一个重写,如
from odoo.addons.spec_driven_model.models import spec_models class ResPartner(spec_models.SpecModel): _inherit = [ 'res.partner', 'partner.binding.mixin', ]
注意您应该从spec_models.SpecModel继承,而不是通常的models.Model。
字段映射:您可以通过覆盖来自Odoo或绑定的字段并使用_compute=,_inverse=或简单地使用related=来定义两种字段映射方式。
关系字段:简单字段可以很容易地这样映射。但是关系字段怎么办?在您的XSD模式中,您的电子发票与partner.binding.mixin相关联,而不是与Odoo的res.partner相关联。不必担心,当为所有关系字段实例化
字段前缀:为了避免Odoo字段和XSD字段之间的字段冲突,XSD字段以模式名称和一些表示模式版本的数字(通常是两位数字)作为前缀。因此,如果您的模式进行小版本升级,将使用相同的字段和类。然而,对于主要升级,可能会使用新的字段和类,因此几个主要版本的数据可以在您的Odoo数据库中同时存在。
StackedModel
遗憾的是,现实生活中的XML比这复杂得多。通常,XML结构会深深地嵌套,因为这使得XSD模式更容易验证它们!例如,一个电子发票行可以是一个嵌套结构,包含大量的税项细节和产品细节。然而,在像Odoo这样的关系型模型中,您通常希望数据结构更扁平。这就是
from odoo.addons.spec_driven_model.models import spec_models class InvoiceLine(spec_models.StackedModel): _inherit = [ 'account.move.line', 'invoice.line.binding.mixin', ] _stacked = 'invoice.line.binding.mixin'
所有在XSD中必需的many2one字段(xsd_required=True)都将自动递归地进行堆叠。您可以使用_force_stack_paths属性强制非必需的many2one字段堆叠。相反,您可以使用stack_skip属性避免一些必需的many2one字段堆叠。
钩子
由于XSD模式可以定义许多不同的模型,spec_driven_model提供了一些方便的钩子,这些钩子会自动将所有XSD mixins转换为具体的Odoo模型(例如带有表的模型),如果您没有将它们注入到现有的Odoo模型中。
目录
用法
请在此处查看我的详细OCA Days说明:https://www.youtube.com/watch?v=6gFOe7Wh8uA
还鼓励您查看测试目录,其中包含来自微软教程中著名的PurchaseOrder.xsd的完整示例。
已知问题/路线图
从generateDS迁移到xsdata;请查看存储库中的xsdata拉取请求。
错误跟踪器
错误在GitHub Issues上进行跟踪。如果遇到问题,请检查那里是否已报告您的问题。如果是您首先发现的问题,请通过提供详细且受欢迎的反馈来帮助我们解决它。
请不要直接联系贡献者以获取支持或帮助解决技术问题。
鸣谢
贡献者
Raphaël Valyi <raphael.valyi@akretion.com.br>
Gabriel Cardoso de Faria <gabriel.cardoso@kmee.com.br>
维护者
此模块由OCA维护。
OCA,即Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并促进其广泛使用。
当前维护者
此模块是OCA/l10n-brazil项目在GitHub上的一部分。
欢迎您做出贡献。要了解如何进行,请访问https://odoo-community.org/page/Contribute。
项目详情
哈希值 for odoo12_addon_spec_driven_model-12.0.5.0.1-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 23d4b928273cb0ace1f3f3ae312f5d3360180aa3520fecbf5d2a8c071f523a76 |
|
MD5 | 52c2d836a4245f397648be410db99086 |
|
BLAKE2b-256 | 85734e198ae02a20673e32dfa46abff798cc9d6e7958eaa518b3be794ab97f45 |