
关于
Odoo QWeb 模板专家,用于 PDF 报告、邮件模板和网站页面。涵盖 t-if、t-foreach、t-field 等指令,以及 Odoo 特定的模板继承和自定义。
name: odoo-qweb-templates description: "Odoo QWeb模板专家,用于PDF报告、邮件模板和网站页面。涵盖t-if、t-foreach、t-field和报告操作。" risk: safe source: "self"
Odoo QWeb模板
概述
QWeb是Odoo的主要模板引擎,用于PDF报告、网站页面和邮件模板。此技能生成正确、结构良好的QWeb XML,包含适当的指令、翻译支持和报告操作绑定。
何时使用此技能
- 创建自定义PDF报告(发票、送货单、证书)。
- 构建由工作流操作触发的QWeb邮件模板。
- 设计带动态内容的Odoo网站页面。
- 调试QWeb渲染错误(
t-if、t-foreach问题)。
工作原理
- 激活:提及
@odoo-qweb-templates并描述所需的报告或模板。 - 生成:接收完整的
ir.actions.report记录和QWeb模板。 - 调试:粘贴损坏的模板以识别和修复渲染问题。
示例
示例1:自定义PDF报告
<!-- 报告操作 -->
<record id="action_report_patient_card" model="ir.actions.report">
<field name="name">Patient Card</field>
<field name="model">hospital.patient</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">hospital_management.report_patient_card</field>
<field name="binding_model_id" ref="model_hospital_patient"/>
</record>
<!-- QWeb模板 -->
<template id="report_patient_card">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="doc">
<div class="page">
<h2><t t-esc="doc.name"/></h2>
<table class="table">
<tr>
<td>年龄</td>
<td><t t-esc="doc.age"/></td>
</tr>
</table>
</div>
</t>
</t>
</template>
核心QWeb指令
| 指令 | 用途 | 示例 |
|------|------|------|
| t-if | 条件渲染 | <span t-if="doc.active">活跃</span> |
| t-foreach | 循环 | <t t-foreach="doc.lines" t-as="line"> |
| t-esc | 转义输出 | <span t-esc="doc.name"/> |
| t-raw | 原始HTML | <div t-raw="doc.description"/> |
| t-field | 字段渲染 | <span t-field="doc.date"/> |
| t-set | 变量赋值 | <t t-set="total" t-value="0"/> |
| t-call | 模板继承 | <t t-call="web.external_layout"> |
兼容工具
Claude CodeCursor
标签
AI与机器学习