简化Python代码中onchange执行的模块
项目描述
这是一个技术模块。其目标是简化从Python代码直接调用onchange方法的过程。
目录
使用方法
要使用此模块,您需要
依赖此模块
调用yourmodel.play_onchanges(values, [‘field’])
示例:如果您想创建一个销售订单,并且想获取与partner_id字段相关的值(就像从UI填写字段一样)
vals = {‘partner_id’: 1}
vals = self.env[‘sale.order’].play_onchanges(vals, [‘partner_id’])
然后,vals将更新为partner_invoice_id、partner_shipping_id、pricelist_id等...
如果vals中没有设置相应的字段,将使用默认值来处理onchange方法。如果您在字段名称列表中传递字段名称,则可以获取它们。
vals = {‘partner_id’: 1}
vals = self.env[‘sale.order’].play_onchanges(vals, [‘partner_id’, ‘date_order’])
vals将包含更改的值以及date_order的默认值
您也可以将其用于现有记录,例如
vals = {‘partner_shipping_id’: 1}
vals = sale.play_onchanges(vals, [‘partner_shipping_id’])
然后,将使用传入的vals和现有的sale vals执行onchange。vals将更新为partner_invoice_id、pricelist_id等...
幕后,play_onchanges 将执行已注册到变更字段列表的所有方法,因此您无需手动调用每个 onchange。为了避免在记录上调用方法时出现性能问题,在调用注册方法之前,将记录转换为内存记录,以避免在通过 onchange 将值分配给记录时触发 SQL 更新命令。
注意
onchange_fields 中的顺序非常重要,因为 onchanges 方法将按此顺序执行。
如果您在 vals 中使用内存对象,请注意,基础模型中的 onchange 方法会调用 self.invalidate_cache() 来重置它。
已知问题/路线图
请注意,由于大多数情况下引入了“计算存储只读 False 字段”,因此 onchanges 倾向于消失。在迁移时,最好选择将其更改为这种方式,而不是使用此模块。
错误跟踪器
错误在 GitHub Issues 上追踪。如果遇到问题,请检查是否已经报告了您的问题。如果您是第一个发现的,请通过提供详细和受欢迎的 反馈 来帮助我们解决问题。
请不要直接联系贡献者以获取支持或技术问题的帮助。
致谢
贡献者
Guewen Baconnier <guewen.baconnier@camptocamp.com>
Florian da Costa <florian.dacosta@akretion.com>
Andrea Stirpe <a.stirpe@onestein.nl>
Souheil Bejaoui <souheil.bejaoui@acsone.eu>
Kevin Khao <kevin.khao@akretion.com>
维护者
此模块由 OCA 维护。
OCA,即 Odoo 社区协会,是一个非营利组织,其使命是支持 Odoo 功能的协作开发并推广其广泛应用。
此模块是 GitHub 上的 OCA/server-tools 项目的一部分。
欢迎您贡献力量。有关如何贡献的更多信息,请访问 https://odoo-community.org/page/Contribute。
项目详情
散列 对于 odoo_addon_onchange_helper-17.0.1.0.1-py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | ba8b15abb208a8cba5fd1741ba0b0562ab5602147d4aeb62375a33ab35df74b1 |
|
MD5 | 4ec623dceff41696908ed1f8490e3730 |
|
BLAKE2b-256 | 754a029c3e0b7577e602efa9875378ffc0e60fa2b60e81a4622f3e7de46e5eca |