有时我们背景需要一些定时任务,Odoo同样也可以设定,依照惯例我们来写一个范例,每半年学生的成绩就要归零重新计算。
首先在models/res_student.xml 新增方法:
class ResStudent(models.Model):
_name = 'res.student'
_inherit = 'res.partner'
_description = 'Student'
nickname = fields.Char(string='绰号')
math_score = fields.Float(string='数学成绩')
chinese_score = fields.Float(string='国文成绩')
avg_score = fields.Float(string='学期平均', compute='_compute_score')
birthday = fields.Date(string='生日', required=True)
school_id = fields.Many2one('res.company', string='所属学校')
school_city = fields.Char(string='所在城市', related='school_id.city')
senior_id = fields.Many2one('res.student', string='直属学长姐')
junior_ids = fields.One2many('res.student', 'senior_id', string='直属学弟妹')
teacher_ids = fields.Many2many('res.partner', string='指导老师', domain=[('is_company', '!=', True)])
gender = fields.Selection([("male", "男"), ("female", "女"), ("other", "其他")], string='性别')
is_leadership = fields.Boolean(default=False)
is_active = fields.Boolean(default=True)
channel_ids = fields.Many2many('mail.channel', 'mail_channel_profile_partner', 'partner_id', 'channel_id', copy=False)
def _init_score(self):
for record in self:
record.math_score = 0.0
record.chinese_score = 0.0
方法单纯就是将两项成绩设为零,而平均成绩我们是用计算的,所以不用设定。
并增加档案/data/res_student_cron.xml
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="student_cron" model="ir.cron">
<field name="name">Student Score Init Cron Job</field>
<field name="model_id" ref="model_res_student"/>
<field name='interval_number'>6</field>
<field name='interval_type'>months</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
<field name="code">model._init_score()</field>
<field name="state">code</field>
</record>
</data>
</odoo>
设定cron job文件
id
:自定义,不重复即可
model
:固定为ir.cron
name
:cron job名称
model_id
:关联model,写法为 "model" + Model Name
interval_type
:执行单位,分别有months
、weeks
、days
、hours
、minutes
。
interval_number
:填入数字,配合interval_type
,本范例代表六个月执行一次。
numbercall
:总共执行几次,如果是-1,代表不断执行。
doall
:布林值,如果没执行到重启时会不会执行。
state
、code
:以code的方式执行,参照为model内的哪个方法。
依照惯例将此文件加入__manifest__.py内:
'data': [
'data/res_student_cron.xml'
...
],
我们重启後便可以在Odoo Scheduled Actions内看到,记得要开启开发者模式:
这里笔者先将时间改为一分钟执行一次,来检查是否正确执行,log内有cron job执行结果:
Student Model内的分数也已经清空
今天介绍就到这里了,明天我们来介绍流水号的设定
<<: 从零开始的8-bit迷宫探险【Level 27】神助攻-老弟帮我配个音效
摘要 作业流程 获得各模型800字机率表 安装R与RStudio 内容 作业流程(今日进度为1.1~...
今日练习档 ԅ( ¯་། ¯ԅ) 你是不是听到枢纽分析表就会腿软!你是不是听到枢纽分析表就想放弃!今...
今天教学Numpy & Pandas & Matplotlib import pan...
一、运算子 有一个library cmath提供一些计算的函式, 例如, #include std:...
在做新产品开发时,对於用户需求收集,寻找产品切入点,我们常有一个典型的错误假设,那就是认为用户最知...