Odoo开发添加业务逻辑

Posted by Ethan on 2019-08-20

添加业务逻辑

  • 对于记录上的逻辑,使用@api.multi装饰器。这里,self将表示一个记录集,然后我们应该遍历每个记录。
1
2
3
4
5
@api.multi 
def do_toggle_done(self):
for task in self:
task.is_done = not task.is_done
return True

代码循环遍历所有待完成的任务记录,并对每个任务记录修改is_done字段,将值取反。
该方法不需要返回任何东西,但我们应该让它至少返回一个True值。

  • 在用@api.model装饰的方法上,自变量表示没有记录的模型
1
2
3
4
5
@api.model 
def do_clear_done(self):
dones = self.search([('is_done', '=', True)])
dones.write({'active': False})
return True

它应该查找已完成的所有活动记录,并使它们处于非活动状态。
我们将构建一个包含所有标记为done的任务的dones记录集。然后,我们将active标志设置为False
search方法是一种返回满足某些条件的记录的API方法。这些条件写在一个domain中,这是一个三元组列表。
写入方法同时对记录集的所有元素设置值。要写入的值使用字典进行描述。
在这里使用write比遍历记录集更有效率,以便逐一为每个记录集赋值。