Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Odoo 为什么不是';t我的act_window with views=定义并使用act_window.view等效项?_Odoo - Fatal编程技术网

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小时前就知道了(大约两周前,我花了三个多小时才弄明白。所以我感觉到了你的痛苦。