关于 odoo-xml-views-builder
为 Odoo 开发者生成和审查 XML 视图定义,支持看板、表单、列表、搜索、日历和图表视图。覆盖 Odoo 14–17,并处理不同版本的动态可见性写法差异。
主要功能
- 01生成多种 Odoo XML 视图
- 02审查并修正常见 XML 错误
- 03支持可见性、组、域和上下文
- 04涵盖 Odoo 14–17 版本差异
- 05提供字段、标签页和智能按钮布局
适用场景
- 01为自定义模型创建表单或列表视图
- 02在现有视图中添加字段或智能按钮
- 03构建含颜色或进度条的看板
- 04为搜索视图配置筛选和分组
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill odoo-xml-views-builder安装后在 Claude Code 中输入/odoo-xml-views-builder确认已加载。
详细介绍
Odoo XML 视图构建器
概述
此技能可生成和审查 Odoo XML 视图定义,涵盖看板、表单、列表、搜索、日历和图表视图。它支持 Odoo 14–17 中的可见性修饰符、groups、domain、context 和 widget 用法,包括从 attrs(v14–16)迁移到内联表达式(v17+)。
何时使用此技能
- 为自定义模型创建新的表单视图或列表视图。
- 向现有视图添加字段、选项卡或智能按钮。
- 创建带有颜色编码或进度条的看板视图。
- 创建带有筛选器和分组依据选项的搜索视图。
工作原理
- 激活:提及
@odoo-xml-views-builder,并描述所需的视图。 - 生成:获取完整、可直接粘贴的 XML 视图定义。
- 审查:粘贴现有 XML,并获取常见错误的修正建议。
示例
以下示例面向 Odoo 17,需要相应的自定义模型、字段和方法。对于 v14–16,请将动态修饰符转换为 attrs 域。视图可见性不等于访问控制:请单独强制实施 ACL、记录规则和方法授权。
示例 1:带选项卡的表单视图
<record id="view_hospital_patient_form" model="ir.ui.view">
<field name="name">hospital.patient.form</field>
<field name="model">hospital.patient</field>
<field name="arch" type="xml">
<form string="Patient">
<header>
<button name="action_confirm" string="Confirm"
type="object" class="btn-primary"
invisible="state != 'draft'"/>
<field name="state" widget="statusbar"
statusbar_visible="draft,confirmed,done"/>
</header>
<sheet>
<div class="oe_title">
<h1><field name="name" placeholder="Patient Name"/></h1>
</div>
<notebook>
<page string="General Info">
<group>
<field name="birth_date"/>
<field name="doctor_id"/>
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
示例 2:看板视图
<record id="view_hospital_patient_kanban" model="ir.ui.view">
<field name="name">hospital.patient.kanban</field>
<field name="model">hospital.patient</field>
<field name="arch" type="xml">
<kanban default_group_by="state" class="o_kanban_small_column">
<field name="name"/>
<field name="state"/>
<field name="doctor_id"/>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_content">
<strong><field name="name"/></strong>
<div>Doctor: <field name="doctor_id"/></div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
最佳实践
- ✅ 建议: 使用内联
invisible="condition"(Odoo 17+)代替attrs实现显示/隐藏逻辑。 - ✅ 建议: 仅当目标版本为 Odoo 14–16 时,才使用
attrs="{'invisible': [...]}"——v17 已不再支持。 - ✅ 建议: 设置
ir.ui.view记录的name字段;在接受这些属性的架构元素上使用受支持的string属性。 - ✅ 建议: 对于 Odoo 17,使用
oe_chatter块,并确保模型继承了所需的 mail 混入;请根据确切的目标版本验证语法。 - ❌ 不要: 在 Odoo 17 中使用
attrs——该版本不支持它,且可能导致视图无法加载。 - ❌ 不要: 在视图 XML 中编写业务逻辑——请将其保留在 Python 模型方法中。
- ❌ 不要: 如果模型上的
domain字段可以动态使用,就不要在视图中使用硬编码的domain字符串。
参考:Odoo 17 视图架构。
限制
- 不涵盖 OWL JavaScript widget 或客户端组件开发。
- 未全面涵盖 搜索面板视图(
<searchpanel>)——这需要前端知识。 - 不涉及 网站 QWeb 视图——此类视图请使用
@odoo-qweb-templates。 - 此技能不涵盖 队列和地图视图(仅限 Enterprise)。
评论
支持 Markdown