Odoo 为什么不是';t我的act_window with views=定义并使用act_window.view等效项?
假设我有这个:Odoo 为什么不是';t我的act_window with views=定义并使用act_window.view等效项?,odoo,Odoo,假设我有这个: <record id="mrp_bom_form_action_master_products" model="ir.actions.act_window"> <field name="name">Master Bill of Materials</field> <field name="res_model">mrp.bom</field&
<record id="mrp_bom_form_action_master_products" model="ir.actions.act_window">
<field name="name">Master Bill of Materials</field>
<field name="res_model">mrp.bom</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" eval="False"/>
<field name="views" eval="[(False, 'tree'), (ref('mrp_bom_form_view_master'), 'form')]"/>
<field name="search_view_id" ref="mrp.view_mrp_bom_filter"/>
</record>
主物料清单
物料清单
形式
树
根据文件:
视图
(视图id、视图类型)对的列表。每对的第二个元素是视图的类别(树、表单、图形等),第一个元素是可选的数据库id(或False)。如果未提供id,客户端应为请求的模型获取指定类型的默认视图(这由字段\u view\u get()自动完成)。列表的第一种类型是默认视图类型,在执行操作时默认打开。每个视图类型在列表中最多应出现一次
但它不起作用。相反,我这样做了:
<record model="ir.actions.act_window.view"
id="mrp_bom_form_view_master_form">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="act_window_id" ref="mrp_bom_form_action_master_products"/>
</record>
<record model="ir.actions.act_window.view"
id="mrp_bom_form_view_master_tree">
<field name="sequence" eval="2"/>
<field name="view_mode">form</field>
<field name="view_id" ref="mrp_bom_form_view_master"/>
<field name="act_window_id" ref="mrp_bom_form_action_master_products"/>
</record>
树
形式
这是可行的,但我不明白为什么第一种情况不可行。在
ir.actions.act\u窗口上的视图
字段是一个未存储的计算字段,没有反函数。换句话说,它是只读的,甚至不存储在数据库中。这就是为什么当您使用此字段创建新操作时,它不会被保存,只是会被忽略
文档有点混乱(我最初也很难弄清楚),但技术上并没有错。这个字段实际上是一个(view\u id,view\u type)
对的列表,在处理存储在数据库中的操作时,您不能直接更改它。它是根据view\u id
和view\u id
字段自动生成的
但是,您可以将该字段直接用于不存储在数据库中,而是从python代码返回的操作。下面是一个取自账户支付
模块的示例:
return {
'name': _('Entry Lines'),
'context': context,
'view_type': 'form',
'view_mode': 'form',
'res_model': 'payment.order.create',
'views': [(resource_id,'form')],
'type': 'ir.actions.act_window',
'target': 'new',
}
啊,这很有道理。我希望我在3小时前就知道了(大约两周前,我花了三个多小时才弄明白。所以我感觉到了你的痛苦。