在Odoo11中创建Cron和ServerAction
0
要在odoo11中创建Cron,您还必须设置model_id字段,因为现在在odoo11中ir.cron 具有与ir.actions.server基于委托的关系,其中model_id设置为required。
下面的代码解释了ir.cr
要在odoo11中创建Cron,您还必须设置model_id字段,因为现在在odoo11中ir.cron 具有与ir.actions.server基于委托的关系,其中model_id设置为required。
下面的代码解释了ir.cron和ir.actions.server之间基于委托的关系。
1
2
3
4
五
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
classir_cron(models.Model):
_name="ir.cron"
_order='cron_name'
ir_actions_server_id=fields.Many2one(
comodel_name='ir.actions.server',
string='Server action',
delegate=True,
ondelete='restrict',
required=True
)
....
....
classIrActionsServer(models.Model):
_name='ir.actions.server'
_table='ir_act_server'
_inherit='ir.actions.actions'
model_id=fields.Many2one(
comodel_name='ir.model',
string='Model',
required=True,
ondelete='cascade',
help="Model on which the server action runs."
)
....
....
|
1
|
|
为了解释这个例子,我正在创建一个新的模型(my.task)并注册 @ api.model的装饰方法cron_do_task。
1
2
3
4
五
6
7
8
|
现在为ir.cron创建数据XML文件,它应该如下所示:
1
2
3
4
五
6
7
8
9
10
11
|
<recordid="cron_do_task"forcecreate='True'model="ir.cron">
<fieldname="name">Do -Task</field>
<fieldeval="False"name="active"/>
<fieldname="user_id"ref="base.user_root"/>
<fieldname="interval_number">15</field>
<fieldname="interval_type">minutes</field>
<fieldname="numbercall">-1</field>
<fieldname="model_id"ref="<strong>model_my_task</strong>"/>
<fieldname="state">code</field>
<fieldname="code">model.<strong>cron_do_task</strong>()</field>
</record>
|
这里model_id是你想要执行代码部分的模型(现在@ api.model修饰方法cron_do_task)。
要在odoo11中创建Server Action,请遵循以下示例:
更新你的python代码并添加@ api.multi修饰方法(server_do_action):
1
2
3
4
五
6
7
8
9
10
11
|
classMyTask(models.Model):
_name="my.task"
@api.model
defcron_do_task(self):pass
@api.multi
def<strong>server_do_action</strong>(self):pass
....
....
|
并为ir.actions.server创建数据XML文件, 如下所示:
1
2
3
4
五
6
7
8
9
10
11
|
<recordid="do_task_server"model="ir.actions.server">
<fieldname="name">Do Action</field>
<fieldname="type">ir.actions.server</field>
<fieldname="model_id"ref="model_my_task"/>
<fieldname="state">code</field>
<fieldname="code">
if records:
action = records.<strong>server_do_action</strong>()
</field>
<fieldname="<strong>binding_model_id</strong>" ref="model_my_task"/>
</record>
|
OpenERP.HK
"> 这里, model_id 是此操作将显示 的模型, binding_model_id 是 代码 段 (records.server_do_action()) 将在单击服务器操作时执行的模型。下一篇:很抱歉没有了