如何通过odoo14中的选择字段更改笔记本中的页面

how to change pages in notebook by a selection field in odoo14

我在表单视图中声明了一个选择字段,我想,每当我更改选择字段时,我的页面都应该更改。 我的选择字段是:

    package_name = fields.Selection([
        ('labour', 'Labour Cost'),
        ('material', 'Material Cost'),
        ('subcontract', 'Subcontract Cost'),
        ('package', 'Work Package Cost'),
        ('others', 'Others')], string="Package Name", default="labour", required=True)

我已经在 xml 部分中为一个选择字段声明了 4 页。 xml 笔记本中的页面如下:

<notebook>
    <page string="Labour Cost" name="labour_cost" attrs="{'invisible': [('package_name', 'not in', 'labour')]}">
        <field name="header_id" attrs="{'invisible': [('package_name', '!=', 'labour')]}">
            <tree string="Labour Cost Tree" editable="bottom">
                <field name="cost_header_id"/>
                <field name="description"/>
                <field name="header_cost"/>
            </tree>
        </field>
    </page>
    <page string="Material Cost" name="material_cost" attrs="{'invisible': [('package_name', '!=', 'material')]}">
        <field name="header_id" attrs="{'invisible': [('package_name', '!=', 'material')]}">
            <tree string="Material Cost Tree" editable="bottom">
                <field name="product_id"/>
                <field name="qty"/>
                <field name="unit_price"/>
                <field name="uom"/>
                <field name="subtotal"/>
            </tree>
        </field>
    </page>
</notebook>

当前有 2 页,当我在 xml 中评论“笔记本页面”时,只有另一个“笔记本页面”的字段会反映在前端,否则如果它反映相同在其中 2 个页面中查看我在其他笔记本页面中声明的字段。

谁能帮帮我。

第一页的attrs可以查一下吗:

... attrs="{'invisible': [('package_name', 'not in', 'labour')]}">

应该是:

... attrs="{'invisible': [('package_name', '!=', 'labour')]}"

并且您定义了字段的多个树视图 header_id ,但不幸的是 Odoo 只选择最后一个定义来生成视图。要解决此问题,您可以尝试为每个页面分别定义树视图,然后在字段上添加 context="{'tree_view_ref' : model.view_id'}"。例如:

<record model="ir.ui.view" id="labour_cost_tree">
    <field name="name">Model</field>
    <field name="model">model.name</field>
    <field name="arch" type="xml">
        <tree string="Labour Cost Tree" editable="bottom">
            <field name="cost_header_id"/>
            <field name="description"/>
            <field name="header_cost"/>
        </tree>
    </field>
</record>

内页:

<field name="header_id" attrs="{'invisible': [('package_name', '!=', 'labour')]}" context="{'tree_view_ref' : module.labour_cost_tree'}">

@Randi Tran 你是对的。我定义了字段 header_id 的多个树视图,Odoo 只选择最后一个定义来生成视图。为了解决这个问题,我必须为每个笔记本页面声明 one2many 字段。

<notebook>
    <page string="Labour Cost" name="labour_cost" attrs="{'invisible': [('package_name', '!=', 'labour')]}">
        <field name="header_id">
            <tree string="Labour Cost Tree" editable="bottom">
                <field name="cost_header_id"/>
                <field name="description"/>
                <field name="header_cost"/>
            </tree>
        </field>
    </page>
    <page string="Material Cost" name="material_cost" attrs="{'invisible': [('package_name', '!=', 'material')]}">
        <field name="material_id">
            <tree string="Material Cost Tree" editable="bottom">
                <field name="product_id"/>
                <field name="qty"/>
                <field name="unit_price"/>
                <field name="uom"/>
                <field name="subtotal"/>
            </tree>
        </field>
    </page>
</notebook>