Odoo - 如何通过 XML 更新不可更新的记录 [英] Odoo - How to update non updateable records by XML

查看:65
本文介绍了Odoo - 如何通过 XML 更新不可更新的记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 res.company

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data noupdate="True">
        <record id="partner_my_company_hk" model="res.partner" context="{'default_is_company': True}">
            <field name="name">My company HK</field>
            <field name="company_id" eval="None"/>
            <field name="customer" eval="False"/>
            <field name="is_company" eval="True"/>
            <field name="street"></field>
            <field name="city"></field>
            <field name="zip"></field>
            <field name="phone"></field>
            <field name="email">info@my_company.com</field>
            <field name="website">www.my_company.com</field>
            <field name="image" type="base64" file="base/static/img/res_company_logo.png"/>
        </record>

        <record id="partner_my_company_us" model="res.partner">
            <field name="name">My company US</field>
            <field name="company_id" eval="None"/>
            <field name="customer" eval="False"/>
            <field name="is_company" eval="True"/>
            <field name="street"></field>
            <field name="city"></field>
            <field name="zip"></field>
            <field name="phone"></field>
            <field name="email">info@my_company.com</field>
            <field name="website">www.my_company.com</field>
            <field name="image" type="base64" file="base/static/img/res_company_logo.png"/>
        </record>

        <record id="company_my_company_hk" model="res.company">
            <field name="name">My company HK</field>
            <field name="partner_id" ref="partner_my_company_hk"/>
            <field name="currency_id" ref="base.USD"/>
        </record>

        <record id="partner_my_company_hk" model="res.partner">
            <field name="company_id" ref="company_my_company_hk"/>
        </record>

        <record id="company_my_company_us" model="res.company">
            <field name="name">My company US</field>
            <field name="partner_id" ref="partner_my_company_us"/>
            <field name="currency_id" ref="base.USD"/>
        </record>

        <record id="partner_my_company_us" model="res.partner">
            <field name="company_id" ref="company_my_company_us"/>
        </record>
    </data>
</odoo>

这是我原来的res_users.xml

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data noupdate="0">
        <record id="base.user_admin" model="res.users">
            <field name="groups_id" eval="[(4, ref('account.group_account_user'))]"/>
        </record>
    </data>
</odoo>

所以我想把这 2 个新创建的 2 个公司设置成 base.user_admin

So I want to set those 2 newly created 2 companies into base.user_admin

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data noupdate="0">
        <record id="base.user_admin" model="res.users">
            <field name="groups_id" eval="[(4, ref('account.group_account_user'))]"/>

            <field name="company_id" ref="company_my_company_hk" />
            <field name="company_ids" eval="[(4, ref('company_my_company_hk')),(4, ref('company_my_company_us'))]" />
        </record>
    </data>
</odoo>

而且它不起作用.但是当我卸载模块并重新安装它时.

And it is not working. But when I uninstall the module and reinstall it works.

为什么?我不能卸载模块只是为了让它在未来工作.有哪些限制以及如何绕过限制?

Why? I cannot uninstall the module just to make it work in the future. What are the limitations and how to bypass the limits?

推荐答案

您可以更改 XML 上的 noupdate 值,更改所需的字段,并且应该在 noupdate 回来.

You can change the noupdate value on XML, change the desired fields and should take the change on noupdate back.

<!-- Allow updating on noupdate=True records -->
<function name="write" model="ir.model.data">
    <function name="search" model="ir.model.data">
        <value
            eval="[('module', '=', 'base'), ('name', '=', 'user_admin')]" />
    </function>
    <value eval="{'noupdate': False}" />
</function>

<record id="base.user_admin" model="res.users">
    <!-- change fields here -->
</record>

<!-- Revoke noupdate change -->
<function name="write" model="ir.model.data">
    <function name="search" model="ir.model.data">
        <value
            eval="[('module', '=', 'base'), ('name', '=', 'user_admin')]" />
    </function>
    <value eval="{'noupdate': True}" />
</function>

这篇关于Odoo - 如何通过 XML 更新不可更新的记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆