gpt4 book ai didi

odoo - 为什么我的 act_window with views= definition 和 using act_window.view 不等效?

转载 作者:行者123 更新时间:2023-12-01 12:38:25 27 4
gpt4 key购买 nike

假设我有这个:

<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>

根据文档:

views

a list of (view_id, view_type) pairs. The second element of each pair is the category of the view (tree, form, graph, ...) and the first is an optional database id (or False). If no id is provided, the client should fetch the default view of the specified type for the requested model (this is automatically done by fields_view_get()). The first type of the list is the default view type and will be open by default when the action is executed. Each view type should be present at most once in the list

但它不起作用。相反,我这样做了:

<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_window 模型中的views 字段是一个非存储计算字段,没有反函数。换句话说,它是只读的,甚至不存储在数据库中。这就是为什么当您使用此字段创建新操作时,它不会被保存而只会被忽略。

文档有点困惑(我最初也很难弄清楚这一点),但在技术上并没有错。该字段确实是(view_id, view_type) 对的列表,只是在处理存储在数据库中的操作时不能直接更改它。它是根据 view_idview_ids 字段自动生成的。

但是,您可以直接将字段用于未存储在数据库中但从 python 代码返回的操作。这是取自 account_payment 模块的示例:

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',
}

关于odoo - 为什么我的 act_window with views= definition 和 using act_window.view 不等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27441230/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com