跳转到主要内容

使用计算字段作为域

项目描述

License: AGPL-3

Web域字段

当定义视图时,可以在关系字段上指定域属性。此属性作为筛选器评估,以在显示现有记录进行选择时应用。

<field name="product_id" domain="[('type','=','product')]"/>

提供的域属性值必须是一个表示有效Odoo域的字符串。此字符串在客户端的受限上下文中评估,在该上下文中,我们可以将表单中存在的字段值和有限的功能作为右操作数引用。

在此上下文中构建复杂域很困难,我们面临一些限制,例如:

  • 将涉及x2many字段值的条件包含在域中的语法很复杂。

  • 在x2many的情况下,域的右侧可能涉及大量的id(性能问题)。

  • 当修改表单而不修改触发onchange的字段时,由其他字段的onchange计算出的域不会重新计算。

  • 无法扩展现有域。您必须在专业插件中完全重新定义域。

为了减轻这些限制,此新插件允许您在视图的XML定义中将字段的值用作其他字段的域。

<field name="product_id_domain" invisible="1"/>
<field name="product_id" domain="product_id_domain"/>

用作域的字段必须以JSON编码的字符串形式提供域。

product_id_domain = fields.Char(
    compute="_compute_product_id_domain",
    readonly=True,
    store=False,
)

@api.multi
@api.depends('name')
def _compute_product_id_domain(self):
    for rec in self:
        rec.product_id_domain = json.dumps(
            [('type', '=', 'product'), ('name', 'like', rec.name)]
        )

用法

Try me on Runbot

错误跟踪器

错误在GitHub Issues上跟踪。如果遇到问题,请检查那里是否已报告您的问题。如果是您首先发现的,请通过提供详细和受欢迎的反馈来帮助我们解决它。

致谢

图片

  • Odoo 社区协会: 图标

贡献者

维护者

Odoo Community Association

本模块由 OCA 维护。

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

要为此模块做出贡献,请访问 https://odoo-community.org

项目详情


下载文件

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

源代码分发

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

构建分发

支持者