Odoo - 如何通过 XML 更新不可更新的记录

tom*_*271 2 odoo

我在下面创建了几家公司 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>
Run Code Online (Sandbox Code Playgroud)

这是我的原创 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>
Run Code Online (Sandbox Code Playgroud)

所以我想将这 2 个新创建的 2 个公司设置为 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>
Run Code Online (Sandbox Code Playgroud)

它不工作。但是当我卸载模块并重新安装它时。

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

CZo*_*ner 7

您可以更改noupdateXML 上的值,更改所需的字段,并应将更改noupdate返回。

<!-- 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>
Run Code Online (Sandbox Code Playgroud)