从Odoo 8中的另一个模型调用方法

时间:2015-04-27 11:18:30

标签: python methods code-generation odoo-8

我在ir_model “x_custom_model”中创建了一个自定义模型,在ir_model_fields中有自己的自定义字段“x_field_name”。 同时我也在生成一个视图,它使用了这个模型和那些字段。 在此视图中,我正在生成一个按钮,在点击时,必须在现有模型“my_model_name”中调用方法“my_method”

我正在尝试在当前使用“x_custom_model”时访问此方法。 问题在于没有获得调用的方法。任何帮助或提示将不胜感激

1)我尝试将方法名称作为name属性的值:

#Button attributes
<button name="my_method" type="object"/>

Error: x_custom_model had no attribute called "my_method"

2)通过服务器操作(Call_My_Method): 设置 - &gt;行动 - &gt;服务器操作。

  • 动作名称:Call_My_Method。
  • 基本型号:x_custom_model。
  • 要做的行动:执行Python代码。

Python代码:

print "Am I getting here?"
action = {"my_model_name".my_method}

#Button attributes
<button name="Call_My_Method" type="action"/>

没有任何事情发生,甚至没有印刷品。

我目前仍然坚持这个问题而且我似乎没有找到有关它的有用信息,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

默认情况下,

<button name="my_method" type="object"/>

将调用表单视图的当前对象中的my_method。您为窗体视图定义了对象,如

<field name="model">x.custom.model</field>

您不能简单地从当前按钮调用另一个对象my_method。您需要在当前x_custom_model对象中定义自定义方法,并让它通过为该对象创建实例来调用其他对象方法。

例如:

self.pool.get('other.object').my_method(cr, uid, arg, context=context)
相关问题