如何使用 Odoo 11 上的服务器操作对扩展字段的更新进行编码?
How to code an update for extended field using server action on Odoo 11?
我正在学习 Odoo 11 并想编写一个按钮,该按钮将通过服务器操作调用 python 方法。
这是我的按钮代码:
<button name="enviarfactura" type="action" string="Homologar" attrs="{'invisible':['|',('sent','=',True), ('state', 'not in', ('open','paid'))]}"/>
这是我的 action.server 代码
<record model="ir.actions.server" id="x_nc_act_serv_fact">
<field name="name">enviarfactura</field>
<field name="model_id" ref="model_account_invoice"/>
<field name="sequence">1</field>
<field name="type">ir.actions.server</field>
<field name="state">code</field>
<field name="code">
if records:
action = records.x_nc_met_fac()
</field>
</record>
最后是我的 python 方法。
@api.multi
def x_nc_met_fac(self):
for rec in self:
self.x_nc_fld_fact = True
self.x_nc_fld_det_fact = 'my custom text'
现在的逻辑是,按钮将调用 server.action,后者将调用我的 python class 上的方法。该方法将为模型上的扩展字段设置新值 account.invoice
从理论上讲,这应该可行,但事实并非如此。
排除可能的错误:
-可能不是 python 缩进。 discord 上的 python 社区帮助了我 :P
- 这不是 server.action 结构,因为当我上传包含此代码的模块时,它会毫无问题地创建 server.action。
- 当我点击按钮时,什么都没有 happens.So 我尝试将按钮的类型更改为 "type=object"
并告诉它我的方法的名称它给出了错误。 Account.invoice 没有属性 "x_nc_met_fac"
感谢任何帮助。提前致谢。
按钮的name
必须是动作ID。所以必须做两个想法:
你的动作应该在按钮之前定义。如果两者在同一个 xml 中,这很容易,如果不检查模块清单中的顺序。 XML 将按此顺序加载!
将按钮 name
更改为 "external ID substitution"
<button name="%(x_nc_act_serv_fact)d" type="action" string="Homologar"
attrs="{'invisible':['|',('sent','=',True), ('state', 'not in', ('open','paid'))]}"/>
我正在学习 Odoo 11 并想编写一个按钮,该按钮将通过服务器操作调用 python 方法。
这是我的按钮代码:
<button name="enviarfactura" type="action" string="Homologar" attrs="{'invisible':['|',('sent','=',True), ('state', 'not in', ('open','paid'))]}"/>
这是我的 action.server 代码
<record model="ir.actions.server" id="x_nc_act_serv_fact">
<field name="name">enviarfactura</field>
<field name="model_id" ref="model_account_invoice"/>
<field name="sequence">1</field>
<field name="type">ir.actions.server</field>
<field name="state">code</field>
<field name="code">
if records:
action = records.x_nc_met_fac()
</field>
</record>
最后是我的 python 方法。
@api.multi
def x_nc_met_fac(self):
for rec in self:
self.x_nc_fld_fact = True
self.x_nc_fld_det_fact = 'my custom text'
现在的逻辑是,按钮将调用 server.action,后者将调用我的 python class 上的方法。该方法将为模型上的扩展字段设置新值 account.invoice 从理论上讲,这应该可行,但事实并非如此。
排除可能的错误:
-可能不是 python 缩进。 discord 上的 python 社区帮助了我 :P
- 这不是 server.action 结构,因为当我上传包含此代码的模块时,它会毫无问题地创建 server.action。
- 当我点击按钮时,什么都没有 happens.So 我尝试将按钮的类型更改为 "type=object"
并告诉它我的方法的名称它给出了错误。 Account.invoice 没有属性 "x_nc_met_fac"
感谢任何帮助。提前致谢。
按钮的name
必须是动作ID。所以必须做两个想法:
你的动作应该在按钮之前定义。如果两者在同一个 xml 中,这很容易,如果不检查模块清单中的顺序。 XML 将按此顺序加载!
将按钮
name
更改为 "external ID substitution"
<button name="%(x_nc_act_serv_fact)d" type="action" string="Homologar"
attrs="{'invisible':['|',('sent','=',True), ('state', 'not in', ('open','paid'))]}"/>