跳转到主要内容

在模型中添加自定义字段

项目描述

Beta License: LGPL-3 OCA/server-tools Translate me on Weblate Try me on Runbot

此模块允许您在不太多修改数据库结构的情况下将自定义信息附加到记录。

此模块定义了您必须理解的一些概念。

模板

一个模板是一组记录应该拥有的属性集合。模板始终应用于给定的模型,然后在编辑该模型的记录时,您可以从当前模板中选择。

例如,此插件包含一个名为“智能合作伙伴”的演示模板,该模板应用于res.partner模型,因此如果您编辑任何合作伙伴,您可以选择该模板并自动填充其属性。

属性

属性是字段的“名称”。模板可以有任意数量的属性,当您将模板应用于记录时,它将自动填充所有属性,空(除非它们具有默认值),准备好分配值。

您可以将属性设置为必填,以强制它有值,尽管您应该记住,对于是/否属性,这意味着只能选择,对于数字属性,零将被禁止。

您还可以为每个属性设置最小值最大值限制,但这些限制仅在数据类型为文本(以约束其长度)或数字时使用。要跳过此约束,只需将最大值设置为小于最小值即可。

属性始终属于模板,也属于模型。

属性定义数据类型(文本、数字、是/否等),当类型为“选择”时,您可以定义可用的选项

例如,“智能合作伙伴”模板具有以下属性

  • 他/她的老师姓名

  • 讨厌他/她如此聪明的所有人的数量

  • 所有学科的平均分数

  • 他/她认为自己是最聪明的人吗?

  • 他/她有哪些弱点?

当您将此模板设置到任何合作伙伴时,您就可以填写这些属性了。

分类

属性也可以属于一个分类,这允许您以逻辑方式排序它们,并使进一步开发更容易。

例如,website_sale_custom_info插件使用这些来在您的在线商店中按类别显示每个产品的技术数据表。

您不需要为每个属性指定分类

选项

当一个属性的类型是“选择”时,您定义可用的选项,因此必须是这些选项之一。

例如,“他/她有哪些弱点?”属性有一些选项

  • 喜欢垃圾食品

  • 需要玩电子游戏

  • 大眼镜

总是这些之一。

当您将模板分配给合作伙伴时,并且您得到了它应该具有的属性,您仍然需要为每个属性设置一个

可以是不同类型(整数、约束选择、布尔值……),具体取决于如何定义属性。然而,始终有一个< span class="docutils literal">值字段,它是一个文本字符串,并自动转换为/从正确的类型。

我为什么需要这个?

想象一下,您有一些外国合作伙伴,对于这些合作伙伴,您需要一些额外的信息,这些信息对于其他人不是必需的,并且您不希望将合作伙伴模型填满许多大部分时间都将为空的字段。

在这种情况下,您可以定义一个名为“Foreign partners”的模板,该模板将应用于< span class="docutils literal">res.partner对象,并定义了一些预期具有的属性

然后您可以将该模板分配给合作伙伴,并且您将自动获得一个包含其应具有的所有属性的子表,以及用于正确填写其的工具。

这适用于任何模型吗?

是的,也不。

是的,因为这是一个基本模块,它提供了使此功能适用于任何模型的工具。

不,因为尽管提供了工具,但它们仅适用于< span class="docutils literal">res.partner模型。这是出于设计考虑,因为不同的模型可能有不同的需求,我们不希望依赖每个可能模型。

因此,如果您想将其应用于其他模型,您将必须开发一个附加插件,该插件依赖于此插件。如果您是开发者,请参阅下面的开发部分。

目录

安装

此模块作为其他模块的基础,这些模块在具体模型中实现此行为。

此模块是技术依赖项,应与其他模块并行安装。

配置

启用主要自定义信息菜单

  1. 启用设置 > 通用设置 > 管理自定义信息

启用合作伙伴的自定义信息标签

  1. 启用设置 > 通用设置 > 在合作伙伴中编辑自定义信息

使用

此模块定义了自定义信息模板,用于定义给定记录应具有哪些属性。

要定义一个模板,您需要

  • 转到自定义信息 > 模板

  • 创建一个。

  • 向其中添加一些属性

启用了该模板的所有数据库记录将自动填写这些属性。

要管理属性,您需要

  • 转到自定义信息 > 属性

要管理属性分类,您需要

  • 转到自定义信息 > 分类

某些属性可以有许多选项可供选择,要管理它们

  • 转到 自定义信息 > 选项

要管理它们的值,您需要

  • 转到 自定义信息 > 值

开发

要创建一个支持自定义信息的模块,只需依赖此模块并从 custom.info 模型继承。

请参阅 product_custom_info 扩展程序中的示例。

已知问题/路线图

  • 自定义属性不能在模板之间共享。

  • 所需的属性目前仅在 UI 中设置,而不是在 ORM 本身中。

  • 使用选项支持递归模板

    Customizations Everywhere

    如果您将一个 附加模板 分配给一个选项,并在使用所有者表单时选择该选项,然后您可以按 重新加载自定义信息模板 以使所有者更新自身以包含所有涉及的模板中的所有属性。如果您不按按钮,则无论如何在保存所有者记录时都会执行重新加载。

    Templateception

    例如,如果您为智能伙伴的“他/她有什么弱点?”属性选择“需要电子游戏”选项,并按 重新加载自定义信息模板,您将得到两个新的属性要填写:“最喜欢的电子游戏类型”和“最喜欢的电子游戏”。

错误跟踪器

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

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

致谢

作者

  • Tecnativa

贡献者

维护者

此模块由 OCA 维护。

Odoo Community Association

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

此模块是 GitHub 上 OCA/server-tools 项目的一部分。

欢迎您贡献。要了解如何贡献,请访问 https://odoo-community.org/page/Contribute

项目详情


下载文件

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

源代码分发

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

构建分发

odoo12_addon_base_custom_info-12.0.2.1.0-py3-none-any.whl (374.0 kB 查看哈希值)

上传时间 Python 3

支持

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