如何通过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>
我在表单视图中声明了一个选择字段,我想,每当我更改选择字段时,我的页面都应该更改。 我的选择字段是:
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>