跳转到主要内容

简化Python代码中onchange执行的模块

项目描述

Production/Stable License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runbot

这是一个技术模块。其目标是简化从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和销售现有的vals执行onchange。 vals将包含partner_invoice_id,pricelist_id等...

在幕后,play_onchanges 将执行已注册到变更字段列表中的所有方法,因此您不需要手动调用每个onchange。为了避免在记录上调用方法时出现性能问题,记录在调用注册的方法之前将被转换为内存记录,以避免在onchange将值分配给记录时触发SQL更新命令。

注意

  • 在onchange_fields中的顺序非常重要,因为onchange方法将按此顺序执行。

  • 如果您在vals中使用内存对象,请注意,基础模型的onchange方法会调用self.invalidate_cache()来重置它。

错误跟踪器

错误在 GitHub Issues 上跟踪。如有问题,请检查是否已报告您的问题。如果您是第一个发现的人,请通过提供详细且受欢迎的 反馈 来帮助我们解决问题。

请不要直接联系贡献者以获取支持或帮助解决技术问题。

鸣谢

作者

  • Akretion

  • Camptocamp

贡献者

维护者

本模块由OCA维护。

Odoo Community Association

OCA,即Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并促进其广泛使用。

本模块是GitHub上 OCA/server-tools 项目的组成部分。

欢迎您贡献力量。有关如何贡献的信息,请访问 https://odoo-community.org/page/Contribute

项目详情


下载文件

下载适合您平台的项目文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分发

此版本没有可用的源代码分发文件。有关信息,请参阅 生成分发存档的教程

构建的分发

odoo13_addon_onchange_helper-13.0.1.1.0-py3-none-any.whl (30.4 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面