如何在Odoo中继承没有ID的模板?

Bre*_*eba 5 templates odoo

我试图显示在任务中进行更改的日期.为此,我需要继承小部件"mail_thread"的模板.该模板的定义中没有id.就是这个:

<?xml version="1.0" encoding="UTF-8"?>
<template>

    <!--
        mail.Widget template used to namespace the css -->
    <t t-name="mail.Root">
        <div class="oe_mail">
        </div>
    </t>

...


                    <span t-att-title="widget.date">
                        <t t-if="widget.timerelative" t-esc="widget.timerelative"/>
                        <t t-if="!widget.timerelative" t-raw="widget.display_date"/>
                    </span>



...

</template>
Run Code Online (Sandbox Code Playgroud)

在我的模块中,我需要替换<span>标签以显示日期.

那么,如何继承该模板并替换标签?

Lea*_*rtS 11

客户端模板有不同的继承机制(Web模板,在<templates>标签内定义,在加载时在客户端使用javascript编译)和服务器端模板(通常是视图,必须包含在__openerp__.py文件的数据列表中,启动/升级odoo服务器时"编译".

您可以使用<t t-extend="template_name">一个或多个 <t t-jquery="jquery_selector" t-operation="operation">行为来扩展web/widget模板模板,这些行为类似于xpath,但客户端更强大.
您不需要ID,继承是基于模板名称的.(t-name指令)

模板继承用于就地更改现有模板,例如,将信息添加到由其他模块创建的模板.

模板继承通过t-extend指令执行,该指令将模板的名称作为参数进行更改.

然后使用任意数量的t-jquery子指令执行更改:

<t t-extend="base.template"> <t t-jquery="ul" t-operation="append"> <li>new element</li> </t> </t>

t-jquery指令采用CSS选择器.此选择器用于扩展模板,以选择应用指定t操作的上下文节点:

  • 追加
    节点的主体附加在上下文节点的末尾(在上下文节点的最后一个子节点之后)
  • prepend
    节点的主体前置于上下文节点(在上下文节点的第一个子节点之前插入)

  • 节点的主体插入上下文节点之前

  • 上下文节点之后插入节点的主体之后
  • 内部
    节点的主体替换上下文节点的子节点
  • 替换
    节点的主体用于替换上下文节点itsel

  • 如果未指定t 操作,则无操作,模板主体将被解释为javascript代码并以上下文节点执行