从按钮或菜单打开特定对象

时间:2012-08-09 19:27:32

标签: openerp

按菜单项或按钮时如何打开特定对象?如果您想要对类似配置的对象进行排序(仅需要一个对象来保存数据,例如用户名和密码),这将非常有用。

我尝试使用view_init方法和active_id上下文密钥,但没有运气。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:9)

我有类似的问题,并找到了解决方案: 在您的ir.actions.act_window定义(以XML格式)中,尝试添加res_id字段,其中包含您要显示的记录的ID。如果这是id计算,也许您可​​以使用相同字段的“eval”属性来获取它。

例如:

<field name="res_id">5</field>

或(我不知道它是否有效)

<field name="res_id" eval="your_func_getting_res_id"/>

当然对于第二种方法,不要忘记定义你的功能。

当我想在一个按钮调用的方法中返回一个ir.actions.act_window时,它适用于我(在python中定义的方法,所以我很容易得到我想要的id。)

希望它可以帮助你或其他人。

答案 1 :(得分:0)

首先,您必须为模型创建视图(树,表单,搜索等)。然后为模型创建操作,例如

<record model="ir.actions.act_window" id="my_unique_action_id">
    <field name="name">Name for the Action</field>
    <field name="res_model">your_model_name</field>
    <field name="view_type">form</field>
    <field name="view_mode">tree,form</field>
    <field name="domain">here_provide_your_domain_conditon_as list_of_tuples</field>
    <field name="context">here_provide_your_context_as_a_dictionary</field>
</record>

然后使用action =您的操作ID创建一个菜单。例如

<menuitem action="my_unique_action_id" id="my_unique_menu_id" parent="your parent_menu_id"/>

如果父菜单在另一个模块中,则提供parent=the_other_module_name.parent_menu_id

注意:我已经说过unique_action_id_name和unique_menu_id_name,因为id在该模块中应该是唯一的。相同的操作ID可以在不同的模块中。