gpt4 book ai didi

当 xml 更改时,Odoo 模板页面不会更新

转载 作者:行者123 更新时间:2023-12-02 13:10:20 29 4
gpt4 key购买 nike

刚刚为客户启动 Odoo,我在模板方面遇到了重大问题。

一个简单的模板,有一些 div 和标题。我也有一个记录让它显示在主菜单中。

当我第一次创建它时,一切正常。但是,如果我想添加或更改一些 html,这些更改不会显示在网站页面上(即使在我刷新/升级主题之后)。网站构建器允许我更改文本等,但这不是我需要的。我希望能够从 XML 更改 html 结构。但是,一旦页面第一次创建......我就不允许这样做。该页面将仅显示最初创建的页面。

希望内容清楚,并提前感谢您的帮助。

最佳答案

版本:Odoo nightly 10.0-20170427

tl;博士

每次您使用网站构建器(添加片段、更改文本等)并保存时,Odoo 数据库中的数据记录都会被修改(显然 - 否则您的更改将不会持久)。

在此过程中,模板记录的“ir_model_data”表中“noupdate”字段的值从false设置为true。只要“noupdate”设置为true,该模板的记录就不会因模块上的升级操作而更改。

为了能够更改这一点,您必须将“noupdate”设置回false,以便在升级过程中数据库中的模板将被 xml 的修改内容覆盖。 请检查我的答案底部的警告!

我的类似问题

我也遇到过类似的问题。像您一样,我创建了一个带有一些 html 标签的简单模块/模板,将其添加到 main_menu 并安装了该模块。一切都按预期进行(菜单链接可见并且显示了我的所有内容)。

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- === Page template === -->
<template name="tpl-imprint" id="website.imprint" page="True">
<t t-call="website.layout">
<div id="wrap">
<div class="container">
<div class="row">
<div class="col-xs-12">
<h1>some Header</h1>
<p>some text</p>
</div>
</div>
<!-- === Snippets' area === -->
<div class="row">
<div class="oe_structure" />
</div>
</div>
</div>
</t>
</template>
<!-- === Menu item === -->
<record id="menu_imprint" model="website.menu">
<field name="name">Imprint</field>
<field name="url">/page/imprint</field>
<field name="parent_id" ref="website.main_menu" />
<field name="sequence" type="int">100</field>
<field name="website_id" type="int">1</field>
</record>
</odoo>

之后,我进一步修改了 xml 文件,添加了一些文本等,升级了模块,一切都按预期工作。然后我在自己创建的页面上使用网站构建器进行了一些实验,添加了一些片段并保存。然后我意识到我的 xml 中有一些拼写错误,所以我转到编辑器,修复了它们,升级了模块,并且 - 与预期不同 - 我的 View 没有得到修改。

由于我对 Odoo 还很陌生,还没有真正深入了解 Odoo 在后端的工作原理,而且我在 google 上找不到任何好的东西,所以我开始分析升级过程中数据库会发生什么情况,如下所示以及使用网站构建器。我发现,虽然仅使用升级来上传我的更改,但只有表“ir_ui_view”的字段“arch_db”被更改为相关记录。但是,通过使用网站构建器,不仅模板内容被写入“ir_ui_view”,而且表“ir_model_data”中相关记录的字段“noupdate”也被更改 - 它被设置为false真实(数据库可能发生了更多更改,但提到的都是与问题相关的更改)。

如何使升级过程再次运行

为了解决升级问题,我只需将“noupdate”的值更改回true,升级过程就会再次运行。 (每次将网站构建器与自定义模板之一一起使用时,您都必须执行此操作 - 至少如果您想再次通过 xml 对模板进行更改)。

在手动更改数据库之前先备份它!(我已经在我的数据库中测试/使用了这些 sql 行,但仍然没有保证;))

在“ir_ui_view”中查找模板的model_data_id

select
model_data_id
from
ir_ui_view
where
name = '<the name of your template - in my case tpl-imprint>';

使用该 ID 查找/更新表“ir_ui_data”中的相关记录

update
ir_model_data
set
noupdate = true
where
id = <the ID you got with the first query>

完成!尝试升级您的模块。您对 xml 的更改现在应该存储在数据库中。

<小时/>

您还可以一步更改该值

update
ir_model_data
set
noupdate = false
where
id in(
select
model_data_id
from
ir_ui_view
where
name = '<the name of your template - in my case tpl-imprint>'
);

!!!警告!!!

如果您将“noupdate”设置为 false,您使用网站构建器所做的所有更改都将在升级过程中丢失。如果您想保留它们,您必须将修改复制粘贴到 xml 中的模板中!为此,请转到要从中获取内容的页面上的“自定义/HTML 编辑器”,然后将要保留的部分复制粘贴到 xml 中。

关于当 xml 更改时,Odoo 模板页面不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43081580/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com