如何在与原始页面不同的页面中显示核心字段?在 Odoo 9

How can I show a core field in a different page from the original? In Odoo 9

在Odoo 9中,我想将一个核心字段放在与原始页面不同的页面中。
在 Inventory -> Product 中,字段为 categ_id:

原始页面 = "Inventory"
求购页面 = "General Information"

我有这个代码:

<record id="product_template_only_form_view_extend" model="ir.ui.view">
    <field name="name">product.template.product.form</field>
    <field name="model">product.template</field>
    <field name="inherit_id" ref="product.product_template_only_form_view"/>
    <field name="arch" type="xml">
        <xpath expr="//field[@name='categ_id']" position="attributes">
            <attribute name="invisible">1</attribute>
        </xpath>
        <xpath expr="//field[@name='default_code']" position="after">
            <field name="categ_id" string="Internal Category"/>
        </xpath>
    </field>
</record>

在第一个 xpath 中,我将原始页面 的字段设置为不可见。行得通。

使用第二个 xpath,我在 求购页面 中显示了 categ_id 字段。这也有效,但是当我修改值并按下保存按钮时,product_template 模型中的值没有被修改。

我是不是漏掉了什么?

您不能在一个表单上有重复的字段。所以你需要从一开始就把它去掉,看不见是不够的。看看这个:

<record id="product_template_only_form_view_extend" model="ir.ui.view">
    <field name="name">product.template.product.form</field>
    <field name="model">product.template</field>
    <field name="inherit_id" ref="product.product_template_only_form_view"/>
    <field name="arch" type="xml">
        <field name="categ_id" position="replace" />

        <field name="default_code" position="after">
            <field name="categ_id" string="Internal Category"/>
        </field>
    </field>
</record>